systemprompt_cli/
paths.rs1use std::path::PathBuf;
2
3use anyhow::{Context, Result};
4use systemprompt_cloud::paths::{get_cloud_paths, CloudPath};
5use systemprompt_cloud::ProjectContext;
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 .context("Failed to resolve cloud paths from profile configuration")?;
29 Ok(cloud_paths.resolve(CloudPath::SessionsDir))
30 }
31 }
32
33 pub fn tenants_path(&self) -> Result<PathBuf> {
34 if self.has_local_dir {
35 Ok(self.project_ctx.local_tenants())
36 } else {
37 let cloud_paths = get_cloud_paths().context("Failed to resolve cloud paths")?;
38 Ok(cloud_paths.resolve(CloudPath::Tenants))
39 }
40 }
41
42 pub fn profiles_dir(&self) -> PathBuf {
43 self.project_ctx.profiles_dir()
44 }
45}