git_same/config/
workspace_manager.rs1use super::workspace::WorkspaceConfig;
6use super::{workspace_policy::WorkspacePolicy, workspace_store::WorkspaceStore};
7use crate::errors::AppError;
8use std::path::{Path, PathBuf};
9
10pub struct WorkspaceManager;
12
13impl WorkspaceManager {
14 pub fn list() -> Result<Vec<WorkspaceConfig>, AppError> {
16 WorkspaceStore::list()
17 }
18
19 pub fn load(root: &Path) -> Result<WorkspaceConfig, AppError> {
21 WorkspaceStore::load(root)
22 }
23
24 pub fn save(workspace: &WorkspaceConfig) -> Result<(), AppError> {
26 WorkspaceStore::save(workspace)
27 }
28
29 pub fn delete(root: &Path) -> Result<(), AppError> {
31 WorkspaceStore::delete(root)
32 }
33
34 pub fn dot_dir(root: &Path) -> PathBuf {
36 WorkspaceStore::dot_dir(root)
37 }
38
39 pub fn cache_path(root: &Path) -> PathBuf {
41 WorkspaceStore::cache_path(root)
42 }
43
44 pub fn sync_history_path(root: &Path) -> PathBuf {
46 WorkspaceStore::sync_history_path(root)
47 }
48
49 pub fn detect_from_cwd(start: &Path) -> Option<PathBuf> {
51 WorkspacePolicy::detect_from_cwd(start)
52 }
53
54 pub fn resolve(
56 name: Option<&str>,
57 config: &super::parser::Config,
58 ) -> Result<WorkspaceConfig, AppError> {
59 WorkspacePolicy::resolve(name, config)
60 }
61
62 pub fn resolve_from_list(
64 workspaces: Vec<WorkspaceConfig>,
65 ) -> Result<WorkspaceConfig, AppError> {
66 WorkspacePolicy::resolve_from_list(workspaces)
67 }
68}
69
70#[cfg(test)]
71#[path = "workspace_manager_tests.rs"]
72mod tests;