use std::path::PathBuf;
use std::sync::OnceLock;
pub static CONFIG_PATH: OnceLock<PathBuf> = OnceLock::new();
pub fn get_config_path() -> PathBuf {
if let Some(path) = CONFIG_PATH.get().cloned() {
return path;
}
let home = dirs::home_dir();
let xdg = dirs::config_dir();
let mut candidates = Vec::new();
if let Some(ref home) = home {
candidates.push(
PathBuf::from(home)
.join(".config")
.join("cutler")
.join("config.toml"),
);
candidates.push(PathBuf::from(home).join(".config").join("cutler.toml"));
}
if let Some(ref xdg) = xdg {
candidates.push(PathBuf::from(xdg).join("cutler").join("config.toml"));
candidates.push(PathBuf::from(xdg).join("cutler.toml"));
}
candidates
.iter()
.find(|f| f.try_exists().unwrap_or(false))
.cloned()
.unwrap_or_else(|| candidates[0].clone())
}