use std::path::PathBuf;
pub fn nova_home(
nova_home: Option<PathBuf>,
userprofile: Option<PathBuf>,
home: Option<PathBuf>,
windows: bool,
) -> Option<PathBuf> {
let set = |value: Option<PathBuf>| value.filter(|path| !path.as_os_str().is_empty());
if let Some(nova_home) = set(nova_home) {
return Some(nova_home);
}
let home = if windows { set(userprofile) } else { set(home) };
home.map(|home| home.join(".nova"))
}
pub fn nova_home_from_env() -> Option<PathBuf> {
let var = |name: &str| std::env::var_os(name).map(PathBuf::from);
nova_home(
var("NOVA_HOME"),
var("USERPROFILE"),
var("HOME"),
cfg!(windows),
)
}
pub fn registry_dir() -> Option<PathBuf> {
nova_home_from_env().map(|home| home.join("registry"))
}