safe_remove/
config.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use std::fs;

use directories::ProjectDirs;
use serde::Deserialize;

/// Configuration structure
#[derive(Debug, Deserialize, Default)]
pub struct Config {
    pub default_duration: Option<String>,
}

impl Config {
    pub fn load() -> Result<Self, String> {
        let proj_dirs = ProjectDirs::from("com", "larpi", "srm")
            .ok_or_else(|| "Cannot determine project directories".to_string())?;
        let config_path = proj_dirs.config_dir();
        let config_file = config_path.join("config.yaml");

        if config_file.exists() {
            let contents = fs::read_to_string(config_file)
                .map_err(|e| format!("Failed to read config file: {}", e))?;
            toml::from_str(&contents).map_err(|e| format!("Failed to parse config: {}", e))
        } else {
            Ok(Config {
                default_duration: None,
            })
        }
    }
}