hbox 0.7.1

CLI tool that leverages container technology to manage packages.
Documentation
use std::env;
use std::path::PathBuf;

pub enum ConfigKey {
    BaseDir,
}

pub struct AppConfig {
    pub base_dir: PathBuf,
}

impl AppConfig {
    pub fn load() -> Self {
        let base_dir = Self::resolve_env(ConfigKey::BaseDir);
        AppConfig { base_dir }
    }

    fn resolve_env(key: ConfigKey) -> PathBuf {
        match key {
            ConfigKey::BaseDir => env::var("HBOX_DIR")
                .unwrap_or_else(|_| "~/.hbox".to_string())
                .into(),
        }
    }

    pub fn config_file_path(&self) -> PathBuf {
        self.base_dir.join("config.json")
    }

    pub fn index_path(&self) -> PathBuf {
        self.base_dir.join("index")
    }

    pub fn overrides_path(&self) -> PathBuf {
        self.base_dir.join("overrides")
    }

    pub fn versions_path(&self) -> PathBuf {
        self.base_dir.join("versions")
    }

    pub fn shims_path(&self) -> PathBuf {
        self.base_dir.join("shims")
    }

    pub fn logs_path(&self) -> PathBuf {
        self.base_dir.join("logs")
    }
}