diff options
author | Toby Vincent <tobyv13@gmail.com> | 2022-11-02 17:48:10 -0500 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2022-11-02 17:48:10 -0500 |
commit | 53d0cefcb1ca3527935479cc07a6f5fe5b1f8051 (patch) | |
tree | 307ba4005e9ffe95396f07750871b6e44b4e502e /src/directories/config.rs | |
parent | 1334d9f1d08a27ea7fa4cd4228ac1fdf44bdd552 (diff) |
feat: finish implementing config and cli
Diffstat (limited to 'src/directories/config.rs')
-rw-r--r-- | src/directories/config.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/directories/config.rs b/src/directories/config.rs new file mode 100644 index 0000000..ec66d0c --- /dev/null +++ b/src/directories/config.rs @@ -0,0 +1,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() + } +} |