diff options
Diffstat (limited to 'src/configmanager.rs')
| -rw-r--r-- | src/configmanager.rs | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/src/configmanager.rs b/src/configmanager.rs index c0047a5..c005d2c 100644 --- a/src/configmanager.rs +++ b/src/configmanager.rs @@ -1,22 +1,25 @@ use std::fs; use serde::Deserialize; use dirs::home_dir; -use std::path::PathBuf; -#[derive(Debug, Deserialize)] +#[derive(Debug, Deserialize, Clone)] pub struct Config { - pub lat: String, - pub lon: String, + pub lat: f64, + pub lon: f64, pub exclude: String, - pub appid: String, - pub lang: String, - pub units: String, - pub cache: bool, - pub rain: String, - pub sunny: String, - pub snowy: String, + pub appid: String, + pub lang: String, + pub units: String, + pub cache: bool, + pub rain: String, + pub sunny: String, + pub snowy: String, } +type BoxedError = Box<dyn std::error::Error + Send + Sync>; + + + pub fn handle_config(_config: &Config) -> Result<(), Box<dyn std::error::Error>> { Ok(()) } @@ -24,15 +27,20 @@ pub fn handle_config(_config: &Config) -> Result<(), Box<dyn std::error::Error>> pub fn gen_standard_conf() { // TODO: Implement } - + impl Config { pub fn load() -> Result<Self, Box<dyn std::error::Error>> { let mut path = home_dir().ok_or("Home directory not found")?; path.push(".config/WeatherFetch/Config.toml"); - let config_str = fs::read_to_string(path)?; - let config: Config = toml::from_str(&config_str)?; + let config_str = fs::read_to_string(&path) + .map_err(|e| format!("Failed to read config: {}", e))?; + + let config: Config = toml::from_str(&config_str) + .map_err(|e| format!("Invalid TOML: {}", e))?; + Ok(config) } } + |
