use clap::Parser; use figment::{ providers::{Env, Format, Toml}, Figment, }; use std::error::Error; use tmuxr::{logging, Cli, Config, Finder, Paths, Result}; use tracing::info; fn main() -> Result<()> { let cli = Cli::parse(); let config = Figment::from(Config::default()) .merge(cli) .merge(Toml::file("tmuxr.toml")) .merge(Env::prefixed("TMUXR_")) .extract() .map_err(eprintln)?; logging::init_from_provider(&config).map_err(eprintln)?; run(&config).map_err(eprintln) } fn eprintln(err: E) -> E { eprintln!("{}", err); err } #[tracing::instrument()] pub fn run(config: &Config) -> Result<()> { let paths = Paths::from_provider(config)?; let selected = Finder::from_provider(config)?.spawn()?.find(paths)?; info!("{:?}", selected); Ok(()) }