use anyhow::{anyhow, Result};
use directories::ProjectDirs;
use std::path::PathBuf;
pub struct Paths {
project_dirs: ProjectDirs,
}
impl Paths {
pub fn new() -> Result<Self> {
let project_dirs = ProjectDirs::from("com", "claude-box", "claude-box")
.ok_or_else(|| anyhow!("Could not determine project directories"))?;
Ok(Self { project_dirs })
}
pub fn config_dir(&self) -> PathBuf {
self.project_dirs.config_dir().to_path_buf()
}
pub fn config_file(&self) -> PathBuf {
self.config_dir().join("config.toml")
}
pub fn data_dir(&self) -> PathBuf {
self.project_dirs.data_dir().to_path_buf()
}
pub fn environments_dir(&self) -> PathBuf {
self.data_dir().join("environments")
}
pub fn environment_dir(&self, name: &str) -> PathBuf {
self.environments_dir().join(name)
}
pub fn claude_data_dir(&self, env_name: &str) -> PathBuf {
self.environment_dir(env_name).join("claude-data")
}
}