use std::path::{ Path, PathBuf };
#[ derive( Debug, Clone ) ]
pub struct ClaudePaths
{
base : PathBuf,
}
impl ClaudePaths
{
#[ inline ]
#[ must_use ]
pub fn new() -> Option< Self >
{
let home = std::env::var( "HOME" ).ok()?;
Some( Self { base : PathBuf::from( home ).join( ".claude" ) } )
}
#[ inline ]
#[ must_use ]
pub fn base( &self ) -> &Path
{
&self.base
}
#[ inline ]
#[ must_use ]
pub fn credentials_file( &self ) -> PathBuf
{
self.base.join( ".credentials.json" )
}
#[ inline ]
#[ must_use ]
pub fn accounts_dir( &self ) -> PathBuf
{
self.base.join( "accounts" )
}
#[ inline ]
#[ must_use ]
pub fn projects_dir( &self ) -> PathBuf
{
self.base.join( "projects" )
}
#[ inline ]
#[ must_use ]
pub fn stats_file( &self ) -> PathBuf
{
self.base.join( "stats-cache.json" )
}
#[ inline ]
#[ must_use ]
pub fn settings_file( &self ) -> PathBuf
{
self.base.join( "settings.json" )
}
#[ inline ]
#[ must_use ]
pub fn session_env_dir( &self ) -> PathBuf
{
self.base.join( "session-env" )
}
#[ inline ]
#[ must_use ]
pub fn sessions_dir( &self ) -> PathBuf
{
self.base.join( "sessions" )
}
}