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/finder/config.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/finder/config.rs (limited to 'src/finder/config.rs') diff --git a/src/finder/config.rs b/src/finder/config.rs new file mode 100644 index 0000000..cb24b5c --- /dev/null +++ b/src/finder/config.rs @@ -0,0 +1,43 @@ +use figment::{providers::Serialized, value, Figment, Metadata, Profile, Provider}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] +pub struct Config { + pub program: String, + pub args: Vec, +} + +impl Config { + pub fn from(provider: T) -> figment::error::Result { + Figment::from(provider).extract() + } +} + +impl Default for Config { + fn default() -> Self { + Self { + program: "fzf-tmux".into(), + args: vec![ + "--", + "--multi", + "--print-query", + "-d/", + "--preview-window='right,75%,<80(up,75%,border-bottom)'", + "--preview='sel={}; less ${sel:-{q}} 2>/dev/null'", + ] + .into_iter() + .map(Into::into) + .collect(), + } + } +} + +impl Provider for Config { + fn metadata(&self) -> Metadata { + Metadata::named("Tmuxr finder config") + } + + fn data(&self) -> figment::error::Result> { + Serialized::defaults(Config::default()).data() + } +} -- cgit v1.2.3-70-g09d2