Skip to main content

systemprompt_cli/
paths.rs

1use std::path::PathBuf;
2
3use systemprompt_cloud::ProjectContext;
4use systemprompt_cloud::paths::{CloudPath, get_cloud_paths};
5
6#[derive(Debug)]
7pub struct ResolvedPaths {
8    project_ctx: ProjectContext,
9    has_local_dir: bool,
10}
11
12impl ResolvedPaths {
13    pub fn discover() -> Self {
14        let project_ctx = ProjectContext::discover();
15        let has_local_dir = project_ctx.systemprompt_dir().exists();
16        Self {
17            project_ctx,
18            has_local_dir,
19        }
20    }
21
22    pub fn sessions_dir(&self) -> PathBuf {
23        if self.has_local_dir {
24            self.project_ctx.sessions_dir()
25        } else {
26            let cloud_paths = get_cloud_paths();
27            cloud_paths.resolve(CloudPath::SessionsDir)
28        }
29    }
30
31    pub fn tenants_path(&self) -> PathBuf {
32        if self.has_local_dir {
33            self.project_ctx.local_tenants()
34        } else {
35            let cloud_paths = get_cloud_paths();
36            cloud_paths.resolve(CloudPath::Tenants)
37        }
38    }
39
40    pub fn profiles_dir(&self) -> PathBuf {
41        self.project_ctx.profiles_dir()
42    }
43}