systemprompt_cli/
paths.rs1use 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}