merge-ready 0.1.1

Show pull request merge blockers as concise prompt tokens
use std::path::PathBuf;

use crate::contexts::configuration::domain::{config::Config, repository::ConfigRepository};

pub struct TomlConfigRepository;

impl ConfigRepository for TomlConfigRepository {
    fn load(&self) -> Config {
        let Some(path) = config_path() else {
            return Config::default();
        };
        let Ok(content) = std::fs::read_to_string(path) else {
            return Config::default();
        };
        toml::from_str(&content).unwrap_or_default()
    }
}

// XDG_CONFIG_HOME が設定されていればそちらを優先し、なければ $HOME/.config にフォールバックする。
fn config_path() -> Option<PathBuf> {
    if let Some(xdg) = std::env::var_os("XDG_CONFIG_HOME") {
        return Some(PathBuf::from(xdg).join("merge-ready.toml"));
    }
    let home = std::env::var_os("HOME")?;
    Some(PathBuf::from(home).join(".config").join("merge-ready.toml"))
}