summaryrefslogtreecommitdiffstats
path: root/src/directories/config.rs
blob: ec66d0c2f97b6e5530d6dc858d0015a7c8a74f7e (plain)
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
use figment::{providers::Serialized, value, Figment, Metadata, Profile, Provider};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;

#[derive(Debug, PartialEq, Eq, Clone, Default, Serialize, Deserialize)]
pub struct Config {
    pub(crate) search: Vec<PathBuf>,
    pub(crate) add: Vec<PathBuf>,
    pub(crate) hidden: bool,
}

impl Config {
    pub fn from<T: Provider>(provider: T) -> figment::error::Result<Config> {
        Figment::from(provider).extract()
    }
}

impl Provider for Config {
    fn metadata(&self) -> Metadata {
        Metadata::named("Tmuxr directory config")
    }

    fn data(&self) -> figment::error::Result<value::Map<Profile, value::Dict>> {
        Serialized::defaults(Config::default()).data()
    }
}