diff options
Diffstat (limited to 'systems/vault/src/vault.rs')
| -rw-r--r-- | systems/vault/src/vault.rs | 41 |
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(()) + } +} |
