use std::path::PathBuf;
use anyhow::{Context, Result};
fn resolve(env_var: &str, fallback_subdir: &str) -> Result<PathBuf> {
if let Some(raw) = std::env::var_os(env_var)
&& !raw.is_empty()
{
let p = PathBuf::from(&raw);
if p.is_absolute() {
return Ok(p);
}
}
let home = dirs::home_dir().context("could not resolve $HOME")?;
Ok(home.join(fallback_subdir))
}
pub fn data_home() -> Result<PathBuf> {
resolve("XDG_DATA_HOME", ".local/share")
}
pub fn cache_home() -> Result<PathBuf> {
resolve("XDG_CACHE_HOME", ".cache")
}