gou_git/
config.rs

1use pretty_log::log;
2use serde::Deserialize;
3use lazy_static::lazy_static;
4
5
6lazy_static! {
7    pub static ref CONFIG: Config = Config::load();
8}
9
10#[derive(Debug, Deserialize)]
11struct LoadableConfig {
12    pub build_command: Option<String>,
13    pub main_branch: Option<String>
14}
15
16impl Default for LoadableConfig {
17    fn default() -> Self {
18        LoadableConfig {
19            build_command: None,
20            main_branch: None
21        }
22    }
23}
24
25#[derive(Debug)]
26pub struct Config {
27    pub build_command: Option<String>,
28    pub main_branch: String
29}
30
31impl Config {
32    pub fn load() -> Self {
33        let file_str = std::fs::read_to_string("./gou.toml");
34
35        let config = toml::from_str::<LoadableConfig>(&file_str.unwrap_or_default());
36
37        if let Err(e) = config {
38            log::error_exit(
39                &format!("[gou] Failed to parse config file: {}", e)
40            );
41        }
42
43        let config = config.unwrap();
44
45        Config {
46            build_command: config.build_command,
47            main_branch: config.main_branch.unwrap_or(String::from("main")),
48        }
49    }
50}