diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/src/main.rs b/src/main.rs index c85bf2f..c682def 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,36 +1,34 @@ +use anyhow::{Context, Result}; use clap::Parser; -use figment::{ - providers::{Env, Format, Toml}, - Figment, -}; -use std::error::Error; -use tmuxr::{logging, Cli, Config, Finder, Paths, Result}; +use figment::providers::{Env, Format, Toml}; +use tmuxr::{Cli, Config, Finder, Logging, Paths}; use tracing::info; fn main() -> Result<()> { - let cli = Cli::parse(); - - let config = Figment::from(Config::default()) - .merge(cli) + let config = Config::figment() + .merge(Cli::parse()) .merge(Toml::file("tmuxr.toml")) .merge(Env::prefixed("TMUXR_")) .extract() - .map_err(eprintln)?; - - logging::init_from_provider(&config).map_err(eprintln)?; + .context("Failed to extract config")?; - run(&config).map_err(eprintln) -} + Logging::from_provider(&config) + .context("Failed to extract logging config")? + .init() + .context("Failed to initialize logging")?; -fn eprintln<E: Error>(err: E) -> E { - eprintln!("{}", err); - err + run(&config) } -#[tracing::instrument()] +#[tracing::instrument] pub fn run(config: &Config) -> Result<()> { - let paths = Paths::from_provider(config)?; - let selected = Finder::from_provider(config)?.spawn()?.find(paths)?; + let paths = Paths::from_provider(config).context("Failed to extract paths config")?; + let selected = Finder::from_provider(config) + .context("Failed to extract finder config")? + .spawn() + .context("Failed to spawn finder process")? + .find(paths) + .context("Failed to write paths to finder stdin")?; info!("{:?}", selected); |