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}