added configuration system

This commit is contained in:
Wyatt J. Miller 2020-06-13 15:06:46 -04:00
parent 9c6381dcfe
commit 1ff6efdd9d

34
src/config.rs Normal file
View File

@ -0,0 +1,34 @@
use std::env;
use config::File;
use serde::{Deserialize};
#[derive(Debug, Deserialize)]
pub struct Configuration {
pub api_token: String,
pub base_api: String,
pub base_url: String,
pub username: Option<String>
}
impl Configuration {
pub fn new() -> Configuration {
let home_dir_env = env::var("HOME").unwrap();
let mut settings = config::Config::default();
let mut location: Vec<String> = Vec::new();
location.push("config.json".to_string());
location.push("/etc/gt/config.json".to_string());
location.push(format!("{}/.config/gt/config.json", home_dir_env));
for i in location {
settings.merge(File::with_name(&i)
.required(false))
.unwrap();
}
let config = settings.try_into::<Configuration>().expect("Couldn't load config into gt!");
config
}
}