diff --git a/src/modules/custom.rs b/src/modules/custom.rs index 7daea110..56790f66 100644 --- a/src/modules/custom.rs +++ b/src/modules/custom.rs @@ -34,6 +34,8 @@ pub fn module<'a>(name: &str, context: &'a Context) -> Option> { } } + let mut module = Module::new(name, config.description, Some(toml_config)); + let mut is_match = context .try_begin_scan()? .set_extensions(&config.detect_extensions) @@ -46,46 +48,42 @@ pub fn module<'a>(name: &str, context: &'a Context) -> Option> { Either::First(b) => b, Either::Second(s) => exec_when(s, &config, context), }; - - if !is_match { - return None; - } } - let mut module = Module::new(name, config.description, Some(toml_config)); + if is_match { + let parsed = StringFormatter::new(config.format).and_then(|formatter| { + formatter + .map_meta(|var, _| match var { + "symbol" => Some(config.symbol), + _ => None, + }) + .map_style(|variable| match variable { + "style" => Some(Ok(config.style)), + _ => None, + }) + .map_no_escaping(|variable| match variable { + "output" => { + let output = exec_command(config.command, context, &config)?; + let trimmed = output.trim(); - let parsed = StringFormatter::new(config.format).and_then(|formatter| { - formatter - .map_meta(|var, _| match var { - "symbol" => Some(config.symbol), - _ => None, - }) - .map_style(|variable| match variable { - "style" => Some(Ok(config.style)), - _ => None, - }) - .map_no_escaping(|variable| match variable { - "output" => { - let output = exec_command(config.command, context, &config)?; - let trimmed = output.trim(); - - if trimmed.is_empty() { - None - } else { - Some(Ok(trimmed.to_string())) + if trimmed.is_empty() { + None + } else { + Some(Ok(trimmed.to_string())) + } } - } - _ => None, - }) - .parse(None, Some(context)) - }); + _ => None, + }) + .parse(None, Some(context)) + }); - match parsed { - Ok(segments) => module.set_segments(segments), - Err(error) => { - log::warn!("Error in module `custom.{}`:\n{}", name, error); - } - }; + match parsed { + Ok(segments) => module.set_segments(segments), + Err(error) => { + log::warn!("Error in module `custom.{}`:\n{}", name, error); + } + }; + } let elapsed = start.elapsed(); log::trace!("Took {:?} to compute custom module {:?}", elapsed, name); module.duration = elapsed;