revq 0.1.1

Review and query your pull requests
use anyhow::{Context, Result};
use directories::BaseDirs;
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct Config {
    pub username: String,
    pub token: String,
    #[serde(default)]
    pub organization_settings: OrganizationSettings,
}

#[derive(Debug, Serialize, Deserialize, Default)]
pub struct OrganizationSettings {
    pub organization: Option<String>,
    pub always: bool,
}

impl Config {
    pub fn load() -> Result<Self> {
        let base_dir = BaseDirs::new().context("Failed to get base directories")?;
        let config_path = base_dir.config_dir().join("revq/config.toml");
        let config = std::fs::read_to_string(config_path.clone())
            .with_context(|| format!("Failed to read config file at {:?}", config_path))?;
        let config: Config = toml::from_str(&config).context("Failed to parse config file")?;
        Ok(config)
    }
}