diff options
author | Matthias Beyer <matthias.beyer@atos.net> | 2021-03-11 11:17:33 +0100 |
---|---|---|
committer | Matthias Beyer <matthias.beyer@atos.net> | 2021-03-11 11:40:45 +0100 |
commit | 540647ef5e911dc931092ecc420de6db1019707f (patch) | |
tree | dc2b47b17560d1d87c0300e62ff0331dbbdc54e7 | |
parent | 5c51a9bdafda4987ab7da52b816e01ea6b56502d (diff) |
Add more error context to config loading
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
-rw-r--r-- | src/main.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index fed26d6..1aaaefb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -51,6 +51,7 @@ extern crate diesel; use std::path::PathBuf; use anyhow::anyhow; +use anyhow::Context; use anyhow::Result; use clap::ArgMatches; use logcrate::debug; @@ -93,14 +94,16 @@ async fn main() -> Result<()> { .ok_or_else(|| anyhow!("Not a repository with working directory. Cannot do my job!"))?; let mut config = ::config::Config::default(); - config.merge(::config::File::from(repo_path.join("config.toml")))?; + config.merge(::config::File::from(repo_path.join("config.toml"))) + .context("Failed to load config.toml from repository")?; { let xdg = xdg::BaseDirectories::with_prefix("butido")?; let xdg_config_file = xdg.find_config_file("config.toml"); if let Some(xdg_config) = xdg_config_file { debug!("Configuration file found with XDG: {}", xdg_config.display()); - config.merge(::config::File::from(xdg_config))?; + config.merge(::config::File::from(xdg_config)) + .context("Failed to load config.toml from XDG configuration directory")?; } else { debug!("No configuration file found with XDG: {}", xdg.get_config_home().display()); } @@ -108,7 +111,10 @@ async fn main() -> Result<()> { config.merge(::config::Environment::with_prefix("BUTIDO"))?; - let config = config.try_into::<NotValidatedConfiguration>()?.validate()?; + let config = config.try_into::<NotValidatedConfiguration>() + .context("Failed to load Configuration object")? + .validate() + .context("Failed to validate configuration")?; let hide_bars = cli.is_present("hide_bars") || crate::util::stdout_is_pipe(); let progressbars = ProgressBars::setup( |