use figment::{providers::Serialized, value, Figment, Metadata, Profile, Provider}; use serde::{Deserialize, Serialize}; #[derive(Debug, PartialEq, Eq, Clone, 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() } }