diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 4c7c630..ea06a7c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -102,12 +102,27 @@ 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"))) + .context("Failed to load config.toml from repository")?; - config - .merge(::config::File::from(repo_path.join("config.toml")))? - .merge(::config::Environment::with_prefix("BUTIDO"))?; + { + 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)) + .context("Failed to load config.toml from XDG configuration directory")?; + } else { + debug!("No configuration file found with XDG: {}", xdg.get_config_home().display()); + } + } + + 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( |