summaryrefslogtreecommitdiff
path: root/src/configmanager.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/configmanager.rs')
-rw-r--r--src/configmanager.rs36
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)
}
}
+