summaryrefslogtreecommitdiffstats
path: root/src/finder/config.rs
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2022-11-02 17:48:10 -0500
committerToby Vincent <tobyv13@gmail.com>2022-11-02 17:48:10 -0500
commit53d0cefcb1ca3527935479cc07a6f5fe5b1f8051 (patch)
tree307ba4005e9ffe95396f07750871b6e44b4e502e /src/finder/config.rs
parent1334d9f1d08a27ea7fa4cd4228ac1fdf44bdd552 (diff)
feat: finish implementing config and cli
Diffstat (limited to 'src/finder/config.rs')
-rw-r--r--src/finder/config.rs43
1 files changed, 43 insertions, 0 deletions
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<String>,
+}
+
+impl Config {
+ pub fn from<T: Provider>(provider: T) -> figment::error::Result<Config> {
+ 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<value::Map<Profile, value::Dict>> {
+ Serialized::defaults(Config::default()).data()
+ }
+}