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