gou-git 0.2.0

Gou is a CLI git wrapper that enables trunk-based development
Documentation
use pretty_log::log;
use serde::Deserialize;
use lazy_static::lazy_static;


lazy_static! {
    pub static ref CONFIG: Config = Config::load();
}

#[derive(Debug, Deserialize)]
struct LoadableConfig {
    pub build_command: Option<String>,
    pub main_branch: Option<String>
}

impl Default for LoadableConfig {
    fn default() -> Self {
        LoadableConfig {
            build_command: None,
            main_branch: None
        }
    }
}

#[derive(Debug)]
pub struct Config {
    pub build_command: Option<String>,
    pub main_branch: String
}

impl Config {
    pub fn load() -> Self {
        let file_str = std::fs::read_to_string("./gou.toml");

        let config = toml::from_str::<LoadableConfig>(&file_str.unwrap_or_default());

        if let Err(e) = config {
            log::error_exit(
                &format!("[gou] Failed to parse config file: {}", e)
            );
        }

        let config = config.unwrap();

        Config {
            build_command: config.build_command,
            main_branch: config.main_branch.unwrap_or(String::from("main")),
        }
    }
}