use nix::unistd;
use std::env;
use std::path::PathBuf;
const CNTR_BASE_DIR_ENV: &str = "CNTR_BASE_DIR";
const DEFAULT_CNTR_BASE_DIR: &str = "/var/lib/cntr";
pub fn get_base_dir() -> PathBuf {
if let Ok(dir) = env::var(CNTR_BASE_DIR_ENV) {
return PathBuf::from(dir);
}
if unistd::geteuid().is_root() {
return PathBuf::from(DEFAULT_CNTR_BASE_DIR);
}
if let Ok(runtime_dir) = env::var("XDG_RUNTIME_DIR") {
let mut path = PathBuf::from(runtime_dir);
path.push("cntr");
return path;
}
if let Ok(home) = env::var("HOME") {
let mut path = PathBuf::from(home);
path.push(".local");
path.push("share");
path.push("cntr");
return path;
}
PathBuf::from(DEFAULT_CNTR_BASE_DIR)
}