From eb52214905743c1f065045df3ccfc9438dd605a2 Mon Sep 17 00:00:00 2001 From: Andrew Gallant Date: Sun, 19 Nov 2023 17:23:36 -0500 Subject: progress --- crates/core/flags/parse.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/crates/core/flags/parse.rs b/crates/core/flags/parse.rs index fb112637..8151110d 100644 --- a/crates/core/flags/parse.rs +++ b/crates/core/flags/parse.rs @@ -72,17 +72,12 @@ fn parse_low() -> ParseResult { if let Err(err) = parser.parse(std::env::args_os().skip(1), &mut low) { return ParseResult::Err(err); } - crate::messages::set_messages(!low.no_messages); - crate::messages::set_ignore_messages(!low.no_ignore_messages); - match low.logging { - Some(LoggingMode::Trace) => { - log::set_max_level(log::LevelFilter::Trace) - } - Some(LoggingMode::Debug) => { - log::set_max_level(log::LevelFilter::Debug) - } - None => log::set_max_level(log::LevelFilter::Warn), - } + // Even though we haven't parsed the config file yet (assuming it exists), + // we can still use the arguments given on the CLI to setup ripgrep's + // logging preferences. Even if the config file changes them in some way, + // it's really the best we can do. This way, for example, folks can pass + // `--trace` and see any messages logged during config file parsing. + set_log_levels(&low); // Before we try to take configuration into account, we can bail early // if a special mode was enabled. This is basically only for version and // help output which shouldn't be impacted by extra configuration. @@ -113,6 +108,12 @@ fn parse_low() -> ParseResult { return ParseResult::Err(err); } // Reset the message and logging levels, since they could have changed. + set_log_levels(&low); + ParseResult::Ok(low) +} + +/// Sets global state flags that control logging based on low-level arguments. +fn set_log_levels(low: &LowArgs) { crate::messages::set_messages(!low.no_messages); crate::messages::set_ignore_messages(!low.no_ignore_messages); match low.logging { @@ -124,7 +125,6 @@ fn parse_low() -> ParseResult { } None => log::set_max_level(log::LevelFilter::Warn), } - ParseResult::Ok(low) } /// Parse the sequence of CLI arguments given a low level typed set of -- cgit v1.2.3