summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs40
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);