use std::path::{Path, PathBuf};
use crate::HomeDirError;
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct Unix {
home_dir: PathBuf,
unixy_name: String,
}
impl Unix {
pub fn new(args: super::AppStrategyArgs) -> Result<Self, HomeDirError> {
Ok(Self {
home_dir: crate::home_dir()?,
unixy_name: format!(".{}", args.unixy_name()),
})
}
}
impl super::AppStrategy for Unix {
fn home_dir(&self) -> &Path {
&self.home_dir
}
fn config_dir(&self) -> PathBuf {
self.home_dir.join(&self.unixy_name)
}
fn data_dir(&self) -> PathBuf {
self.home_dir.join(&self.unixy_name).join("data/")
}
fn cache_dir(&self) -> PathBuf {
self.home_dir.join(&self.unixy_name).join("cache/")
}
fn state_dir(&self) -> Option<PathBuf> {
Some(self.home_dir.join(&self.unixy_name).join("state/"))
}
fn runtime_dir(&self) -> Option<PathBuf> {
Some(self.home_dir.join(&self.unixy_name).join("runtime/"))
}
}