diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-03-11 22:52:25 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-03-11 22:52:25 +0800 |
| commit | 085bce616f68eb6c1586f7a7e1089b5f4cdd0155 (patch) | |
| tree | 5782ae03692754845958ef06b92c56805ddd7bbc /systems/workspace/src/workspace.rs | |
| parent | 55c7ea778be2f3ce44d88440607ac8d4117e31d2 (diff) | |
Add vault and workspace systems with config management
Diffstat (limited to 'systems/workspace/src/workspace.rs')
| -rw-r--r-- | systems/workspace/src/workspace.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/systems/workspace/src/workspace.rs b/systems/workspace/src/workspace.rs new file mode 100644 index 0000000..6310146 --- /dev/null +++ b/systems/workspace/src/workspace.rs @@ -0,0 +1,38 @@ +use asset_system::rw::RWData; +use constants::workspace::{dirs::workspace_dir_workspace, files::workspace_file_config}; +use framework::{SpaceRootTest, space::SpaceRoot}; +use tokio::fs::create_dir_all; + +use crate::workspace::config::WorkspaceConfig; + +pub mod config; +pub mod error; +pub mod manager; + +#[derive(Default, SpaceRootTest)] +pub struct Workspace; + +impl SpaceRoot for Workspace { + fn get_pattern() -> framework::space::SpaceRootFindPattern { + framework::space::SpaceRootFindPattern::IncludeDotDir(workspace_dir_workspace().into()) + } + + async fn create_space( + path: &std::path::Path, + ) -> Result<(), framework::space::error::SpaceError> { + let workspace_root = path.join(workspace_dir_workspace()); + let workspace_toml = path.join(workspace_file_config()); + + // Create workspace directory + create_dir_all(workspace_root) + .await + .map_err(framework::space::error::SpaceError::from)?; + + // Create configuration file + WorkspaceConfig::write(WorkspaceConfig::default(), &workspace_toml) + .await + .map_err(|e| framework::space::error::SpaceError::Other(e.to_string()))?; + + Ok(()) + } +} |
