From 55f8a260e0fb29725c80ec7af896e6b8c60503df Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 9 Jun 2022 16:35:08 -0500 Subject: [PATCH] refactor(cli): Centralize reading of verbose --- src/bin/cargo/cli.rs | 6 +++--- src/bin/cargo/commands/tree.rs | 2 +- src/bin/cargo/commands/version.rs | 2 +- src/cargo/util/command_prelude.rs | 10 ++++++++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/bin/cargo/cli.rs b/src/bin/cargo/cli.rs index 19e40d588..2311b4209 100644 --- a/src/bin/cargo/cli.rs +++ b/src/bin/cargo/cli.rs @@ -112,7 +112,7 @@ Run with 'cargo -Z [FLAG] [SUBCOMMAND]'", return Ok(()); } - let is_verbose = expanded_args.occurrences_of("verbose") > 0; + let is_verbose = expanded_args.verbose() > 0; if expanded_args.is_present("version") { let version = get_version_string(is_verbose); drop_print!(config, "{}", version); @@ -331,7 +331,7 @@ fn config_configure( ._is_valid_arg("target-dir") .then(|| subcommand_args.value_of_path("target-dir", config)) .flatten(); - let verbose = global_args.verbose + args.occurrences_of("verbose") as u32; + let verbose = global_args.verbose + args.verbose(); // quiet is unusual because it is redefined in some subcommands in order // to provide custom help text. let quiet = args.is_present("quiet") @@ -389,7 +389,7 @@ struct GlobalArgs { impl GlobalArgs { fn new(args: &ArgMatches) -> GlobalArgs { GlobalArgs { - verbose: args.occurrences_of("verbose") as u32, + verbose: args.verbose(), quiet: args.is_present("quiet"), color: args.value_of("color").map(|s| s.to_string()), frozen: args.is_present("frozen"), diff --git a/src/bin/cargo/commands/tree.rs b/src/bin/cargo/commands/tree.rs index c1d47cbe5..7b13a58fc 100644 --- a/src/bin/cargo/commands/tree.rs +++ b/src/bin/cargo/commands/tree.rs @@ -104,7 +104,7 @@ pub fn cli() -> App { pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { if args.is_present("version") { - let verbose = args.occurrences_of("verbose") > 0; + let verbose = args.verbose() > 0; let version = cli::get_version_string(verbose); cargo::drop_print!(config, "{}", version); return Ok(()); diff --git a/src/bin/cargo/commands/version.rs b/src/bin/cargo/commands/version.rs index 1e59f1369..6a611bfb7 100644 --- a/src/bin/cargo/commands/version.rs +++ b/src/bin/cargo/commands/version.rs @@ -9,7 +9,7 @@ pub fn cli() -> App { } pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult { - let verbose = args.occurrences_of("verbose") > 0; + let verbose = args.verbose() > 0; let version = cli::get_version_string(verbose); cargo::drop_print!(config, "{}", version); Ok(()) diff --git a/src/cargo/util/command_prelude.rs b/src/cargo/util/command_prelude.rs index 325e765f2..1432ee942 100644 --- a/src/cargo/util/command_prelude.rs +++ b/src/cargo/util/command_prelude.rs @@ -360,6 +360,10 @@ pub trait ArgMatchesExt { self.value_of_u32("jobs") } + fn verbose(&self) -> u32 { + self._occurrences("verbose") + } + fn keep_going(&self) -> bool { self._is_present("keep-going") } @@ -729,6 +733,8 @@ pub trait ArgMatchesExt { fn _values_of_os(&self, name: &str) -> Vec; + fn _occurrences(&self, name: &str) -> u32; + fn _is_present(&self, name: &str) -> bool; fn _is_valid_arg(&self, name: &str) -> bool; @@ -757,6 +763,10 @@ impl<'a> ArgMatchesExt for ArgMatches { .collect() } + fn _occurrences(&self, name: &str) -> u32 { + self.occurrences_of(name) as u32 + } + fn _is_present(&self, name: &str) -> bool { self.is_present(name) }