Fix bug in config from cli flags

The flag value (true/false) was always provided to the configuration, which means that the cli was overriding everything else.
This commit is contained in:
Thomas Wickham 2021-03-02 22:03:58 +01:00
parent 009ffd793b
commit ffce735b79
3 changed files with 14 additions and 9 deletions

View File

@ -10,7 +10,7 @@ use crate::infra::cli::CLIOpts;
#[derive(Clone, Debug, Deserialize, Serialize)] #[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Configuration { pub struct Configuration {
pub log_level_verbose: bool, pub verbose: bool,
pub secret_pepper: String, pub secret_pepper: String,
pub some_text: String, pub some_text: String,
} }
@ -18,7 +18,7 @@ pub struct Configuration {
impl Default for Configuration { impl Default for Configuration {
fn default() -> Self { fn default() -> Self {
Configuration { Configuration {
log_level_verbose: false, verbose: false,
secret_pepper: String::from("secretsecretpepper"), secret_pepper: String::from("secretsecretpepper"),
some_text: String::new(), some_text: String::new(),
} }
@ -27,9 +27,13 @@ impl Default for Configuration {
impl Configuration { impl Configuration {
fn from_cli(cli_opts: CLIOpts) -> Figment { fn from_cli(cli_opts: CLIOpts) -> Figment {
let config_opts_from_cli = map! { let mut config_opts_from_cli = map!();
"log_level_verbose" => cli_opts.verbose
}; // XXX only add the option if given so that the `false` value don't override a
// previous configuration
if cli_opts.verbose {
config_opts_from_cli.insert("verbose", true);
}
Figment::new().join(Serialized::defaults(config_opts_from_cli)) Figment::new().join(Serialized::defaults(config_opts_from_cli))
} }

View File

@ -17,7 +17,7 @@ pub fn init(config: Configuration) -> anyhow::Result<()> {
} }
fn log_level_from_config(config: Configuration) -> tracing::Level { fn log_level_from_config(config: Configuration) -> tracing::Level {
if config.log_level_verbose { if config.verbose {
tracing::Level::DEBUG tracing::Level::DEBUG
} else { } else {
tracing::Level::INFO tracing::Level::INFO

View File

@ -8,9 +8,10 @@ fn main() -> Result<()> {
let config = infra::configuration::init(cli_opts.clone())?; let config = infra::configuration::init(cli_opts.clone())?;
infra::logging::init(config.clone())?; infra::logging::init(config.clone())?;
info!("Starting...."); info!("Starting LLDAP....");
debug!("Config: {:?}", config);
debug!("CLI: {:?}", cli_opts); debug!("CLI: {:#?}", cli_opts);
debug!("Configuration: {:#?}", config);
info!("End."); info!("End.");
Ok(()) Ok(())
} }