diff options
-rw-r--r-- | src/config.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..7280aed --- /dev/null +++ b/src/config.rs @@ -0,0 +1,28 @@ +use std::fs::File; +use std::io::Read; +use dirs; +use toml; + +use errors::ConfigError; + +const CONFIG_NAME: &str = "almanac.toml"; + +#[derive(Deserialize)] +pub struct Config { + pub cals: Vec<String>, +} + +impl Config { + pub fn parse() -> Result<Config, ConfigError> { + let config_path = match dirs::config_dir() { + Some(path) => path, + None => return Err(ConfigError::MissingPath), + }.join(CONFIG_NAME); + + let mut file = File::open(&config_path)?; + let mut toml_str = String::new(); + file.read_to_string(&mut toml_str)?; + + Ok(toml::from_str(&toml_str)?) + } +} |