use std::path::PathBuf;
use crate::error::{Error, Result};
pub const REGISTRY_BUNDLED: &str = "bundled";
pub(crate) fn home_dir() -> Result<PathBuf> {
dirs::home_dir()
.or_else(|| std::env::var("HOME").ok().map(PathBuf::from))
.ok_or(Error::HomeDirNotFound)
}
pub fn service_data_root() -> Result<PathBuf> {
let base = match dirs::data_dir() {
Some(d) => d,
None => home_dir()?.join(".local").join("share"),
};
Ok(base.join("services"))
}
pub fn service_home(service_name: &str) -> Result<PathBuf> {
Ok(service_data_root()?.join(service_name))
}
pub fn metadata_path(service_name: &str) -> Result<PathBuf> {
Ok(service_home(service_name)?.join("metadata.toml"))
}
pub fn quadlet_dir() -> Result<PathBuf> {
let base = match dirs::config_dir() {
Some(d) => d,
None => home_dir()?.join(".config"),
};
Ok(base.join("containers").join("systemd"))
}