summaryrefslogtreecommitdiff
path: root/systems/vault/src/vault.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/vault/src/vault.rs
parent55c7ea778be2f3ce44d88440607ac8d4117e31d2 (diff)
Add vault and workspace systems with config management
Diffstat (limited to 'systems/vault/src/vault.rs')
-rw-r--r--systems/vault/src/vault.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/systems/vault/src/vault.rs b/systems/vault/src/vault.rs
new file mode 100644
index 0000000..262f8c5
--- /dev/null
+++ b/systems/vault/src/vault.rs
@@ -0,0 +1,41 @@
+use asset_system::rw::RWData;
+use constants::vault::{
+ dirs::{vault_dir_changes, vault_dir_ignore_rules, vault_dir_member_root, vault_dir_refsheets},
+ files::vault_file_config,
+};
+use framework::{SpaceRootTest, space::SpaceRoot};
+use tokio::fs;
+
+use crate::vault::config::VaultConfig;
+
+pub mod config;
+pub mod error;
+pub mod manager;
+
+#[derive(Default, SpaceRootTest)]
+pub struct Vault;
+
+impl SpaceRoot for Vault {
+ fn get_pattern() -> framework::space::SpaceRootFindPattern {
+ framework::space::SpaceRootFindPattern::IncludeFile(vault_file_config().into())
+ }
+
+ async fn create_space(
+ path: &std::path::Path,
+ ) -> Result<(), framework::space::error::SpaceError> {
+ let vault_toml = path.join(vault_file_config());
+
+ // Create configuration file
+ VaultConfig::write(VaultConfig::default(), &vault_toml)
+ .await
+ .map_err(|e| framework::space::error::SpaceError::Other(e.to_string()))?;
+
+ // Create directories
+ fs::create_dir_all(vault_dir_refsheets()).await?;
+ fs::create_dir_all(vault_dir_member_root()).await?;
+ fs::create_dir_all(vault_dir_ignore_rules()).await?;
+ fs::create_dir_all(vault_dir_changes()).await?;
+
+ Ok(())
+ }
+}