From 53d0cefcb1ca3527935479cc07a6f5fe5b1f8051 Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Wed, 2 Nov 2022 17:48:10 -0500 Subject: feat: finish implementing config and cli --- src/directories/config.rs | 26 ++++++++++++++++++++++++++ src/directories/error.rs | 17 +++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 src/directories/config.rs create mode 100644 src/directories/error.rs (limited to 'src/directories') 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, + pub(crate) add: Vec, + pub(crate) hidden: bool, +} + +impl Config { + pub fn from(provider: T) -> figment::error::Result { + Figment::from(provider).extract() + } +} + +impl Provider for Config { + fn metadata(&self) -> Metadata { + Metadata::named("Tmuxr directory config") + } + + fn data(&self) -> figment::error::Result> { + Serialized::defaults(Config::default()).data() + } +} diff --git a/src/directories/error.rs b/src/directories/error.rs new file mode 100644 index 0000000..4e77fc1 --- /dev/null +++ b/src/directories/error.rs @@ -0,0 +1,17 @@ +pub type Result = std::result::Result; + +#[derive(thiserror::Error, Debug)] +pub enum Error { + #[error("Ignore error: {0:?}")] + Ignore(#[from] ignore::Error), + + #[error("Path error: {0:?}")] + Path(#[from] PathError), +} + +#[derive(thiserror::Error, Debug)] +pub enum PathError { + #[error("Path contains invalid unicode: {0:?}")] + Unicode(String), +} + -- cgit v1.2.3-70-g09d2