use std::path::PathBuf;
pub fn root() -> Option<PathBuf> {
if let Some(xdg) = std::env::var_os("XDG_CONFIG_HOME").filter(|s| !s.is_empty()) {
return Some(PathBuf::from(xdg).join("inkhaven"));
}
std::env::var_os("HOME").map(|h| PathBuf::from(h).join(".config").join("inkhaven"))
}
pub fn personas_dir() -> Option<PathBuf> {
root().map(|r| r.join("personas"))
}
pub fn genres_dir() -> Option<PathBuf> {
root().map(|r| r.join("genres"))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn respects_xdg_then_home() {
if let Some(r) = root() {
assert_eq!(personas_dir().unwrap(), r.join("personas"));
assert_eq!(genres_dir().unwrap(), r.join("genres"));
assert!(r.ends_with("inkhaven"));
}
}
}