komichi 2.2.0

Application tools for working with file-system paths
Documentation
use camino::Utf8PathBuf;

use crate::system::SystemHomeInfo;

pub struct SystemDirs {
    app_name: String,
}

impl SystemDirs {
    pub fn new(app_name: &str) -> Self {
        let app_name = app_name.to_owned();
        Self { app_name }
    }
}

impl SystemHomeInfo for SystemDirs {
    fn get_cache_home(&self) -> Utf8PathBuf {
        let mut out = Utf8PathBuf::from("/usr/local/cache");
        out.push(&self.app_name);
        out
    }
    fn get_config_home(&self) -> Utf8PathBuf {
        let mut out = Utf8PathBuf::from("/usr/local/etc");
        out.push(&self.app_name);
        out
    }
    fn get_data_home(&self) -> Utf8PathBuf {
        let mut out = Utf8PathBuf::from("/usr/local/var");
        out.push(&self.app_name);
        out
    }
    fn get_log_home(&self) -> Utf8PathBuf {
        let mut out = Utf8PathBuf::from("/usr/local/var/log");
        out.push(&self.app_name);
        out
    }
    fn get_state_home(&self) -> Utf8PathBuf {
        let mut out = Utf8PathBuf::from("/usr/local/var/lib");
        out.push(&self.app_name);
        out
    }
    fn get_opt_home(&self) -> Utf8PathBuf {
        let mut out = Utf8PathBuf::from("/opt");
        out.push(&self.app_name);
        out
    }
}