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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use crate::cfg::config::Configuration;

use directories::UserDirs;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct CfgPreferences {
    #[serde(default = "default_runs")]
    pub runs: PathBuf,

    #[serde(default)]
    #[serde(alias = "no_check")]
    pub do_not_check_latest_version: bool,

    #[serde(default)]
    pub auto_update: bool,

    #[serde(default)]
    pub debug: bool,

    #[serde(default)]
    pub debug_cfg: bool,
}

impl Configuration for CfgPreferences {}

impl Default for CfgPreferences {
    fn default() -> Self {
        Self {
            runs: default_runs(),
            do_not_check_latest_version: false,
            auto_update: false,
            debug: false,
            debug_cfg: false,
        }
    }
}

pub fn default_runs() -> PathBuf {
    let dirs = UserDirs::new().unwrap();
    dirs.desktop_dir().unwrap().join("kalast-runs")
}