summaryrefslogtreecommitdiff
path: root/systems/workspace/src/workspace.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-03-11 22:52:25 +0800
committer魏曹先生 <1992414357@qq.com>2026-03-11 22:52:25 +0800
commit085bce616f68eb6c1586f7a7e1089b5f4cdd0155 (patch)
tree5782ae03692754845958ef06b92c56805ddd7bbc /systems/workspace/src/workspace.rs
parent55c7ea778be2f3ce44d88440607ac8d4117e31d2 (diff)
Add vault and workspace systems with config management
Diffstat (limited to 'systems/workspace/src/workspace.rs')
-rw-r--r--systems/workspace/src/workspace.rs38
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(())
+ }
+}