diff --git a/src/uu/base32/src/base_common.rs b/src/uu/base32/src/base_common.rs index 849160f4149..d49f02bc8fd 100644 --- a/src/uu/base32/src/base_common.rs +++ b/src/uu/base32/src/base_common.rs @@ -39,7 +39,7 @@ pub mod options { impl Config { pub fn from(options: &clap::ArgMatches) -> UResult { - let file: Option = match options.values_of(options::FILE) { + let file: Option = match options.get_many::(options::FILE) { Some(mut values) => { let name = values.next().unwrap(); if let Some(extra_op) = values.next() { diff --git a/src/uu/basename/src/basename.rs b/src/uu/basename/src/basename.rs index 770fc34cffe..b527172875d 100644 --- a/src/uu/basename/src/basename.rs +++ b/src/uu/basename/src/basename.rs @@ -69,7 +69,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { format!( "extra operand {}", matches - .values_of(options::NAME) + .get_many::(options::NAME) .unwrap() .nth(2) .unwrap() @@ -81,7 +81,11 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let suffix = if opt_suffix { matches.value_of(options::SUFFIX).unwrap() } else if !opt_multiple && matches.occurrences_of(options::NAME) > 1 { - matches.values_of(options::NAME).unwrap().nth(1).unwrap() + matches + .get_many::(options::NAME) + .unwrap() + .nth(1) + .unwrap() } else { "" }; @@ -91,9 +95,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { // let paths: Vec<_> = if multiple_paths { - matches.values_of(options::NAME).unwrap().collect() + matches.get_many::(options::NAME).unwrap().collect() } else { - matches.values_of(options::NAME).unwrap().take(1).collect() + matches + .get_many::(options::NAME) + .unwrap() + .take(1) + .collect() }; let line_ending = if opt_zero { "\0" } else { "\n" }; diff --git a/src/uu/cat/src/cat.rs b/src/uu/cat/src/cat.rs index 77f75b85887..62afc0aa37c 100644 --- a/src/uu/cat/src/cat.rs +++ b/src/uu/cat/src/cat.rs @@ -224,7 +224,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { .any(|v| matches.contains_id(v)); let squeeze_blank = matches.contains_id(options::SQUEEZE_BLANK); - let files: Vec = match matches.values_of(options::FILE) { + let files: Vec = match matches.get_many::(options::FILE) { Some(v) => v.clone().map(|v| v.to_owned()).collect(), None => vec!["-".to_owned()], }; diff --git a/src/uu/chmod/src/chmod.rs b/src/uu/chmod/src/chmod.rs index e98f6e47c71..d1a051a1c4c 100644 --- a/src/uu/chmod/src/chmod.rs +++ b/src/uu/chmod/src/chmod.rs @@ -83,7 +83,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { modes.to_string() }; let mut files: Vec = matches - .values_of(options::FILE) + .get_many::(options::FILE) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); let cmode = if fmode.is_some() { diff --git a/src/uu/chroot/src/chroot.rs b/src/uu/chroot/src/chroot.rs index 30cf75644d3..6f575f4b147 100644 --- a/src/uu/chroot/src/chroot.rs +++ b/src/uu/chroot/src/chroot.rs @@ -52,8 +52,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { return Err(ChrootError::NoSuchDirectory(format!("{}", newroot.display())).into()); } - let commands = match matches.values_of(options::COMMAND) { - Some(v) => v.collect(), + let commands = match matches.get_many::(options::COMMAND) { + Some(v) => v.map(|s| s.as_str()).collect(), None => vec![], }; diff --git a/src/uu/cksum/src/cksum.rs b/src/uu/cksum/src/cksum.rs index 3cc8100adb1..fd97967693c 100644 --- a/src/uu/cksum/src/cksum.rs +++ b/src/uu/cksum/src/cksum.rs @@ -120,7 +120,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); - let files: Vec = match matches.values_of(options::FILE) { + let files: Vec = match matches.get_many::(options::FILE) { Some(v) => v.clone().map(|v| v.to_owned()).collect(), None => vec![], }; diff --git a/src/uu/cp/src/cp.rs b/src/uu/cp/src/cp.rs index d260f6ebed0..a81d52ed888 100644 --- a/src/uu/cp/src/cp.rs +++ b/src/uu/cp/src/cp.rs @@ -503,7 +503,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { } let paths: Vec = matches - .values_of(options::PATHS) + .get_many::(options::PATHS) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); @@ -642,7 +642,7 @@ impl Options { // Parse attributes to preserve let mut preserve_attributes: Vec = if matches.contains_id(options::PRESERVE) { - match matches.values_of(options::PRESERVE) { + match matches.get_many::(options::PRESERVE) { None => DEFAULT_ATTRIBUTES.to_vec(), Some(attribute_strs) => { let mut attributes = Vec::new(); diff --git a/src/uu/csplit/src/csplit.rs b/src/uu/csplit/src/csplit.rs index 998b6fcd19e..fc60ec1ca8f 100644 --- a/src/uu/csplit/src/csplit.rs +++ b/src/uu/csplit/src/csplit.rs @@ -724,9 +724,9 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { // get the patterns to split on let patterns: Vec = matches - .values_of(options::PATTERN) + .get_many::(options::PATTERN) .unwrap() - .map(str::to_string) + .map(|s| s.to_string()) .collect(); let patterns = patterns::get_patterns(&patterns[..])?; let options = CsplitOptions::new(&matches); diff --git a/src/uu/cut/src/cut.rs b/src/uu/cut/src/cut.rs index b4a125555b0..2d76648d0ca 100644 --- a/src/uu/cut/src/cut.rs +++ b/src/uu/cut/src/cut.rs @@ -523,9 +523,9 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { }; let files: Vec = matches - .values_of(options::FILE) + .get_many::(options::FILE) .unwrap_or_default() - .map(str::to_owned) + .map(|s| s.to_owned()) .collect(); match mode_parse { diff --git a/src/uu/date/src/date.rs b/src/uu/date/src/date.rs index 05920fa81d0..daed244e385 100644 --- a/src/uu/date/src/date.rs +++ b/src/uu/date/src/date.rs @@ -156,8 +156,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let form = form[1..].to_string(); Format::Custom(form) } else if let Some(fmt) = matches - .values_of(OPT_ISO_8601) - .map(|mut iter| iter.next().unwrap_or(DATE).into()) + .get_many::(OPT_ISO_8601) + .map(|mut iter| iter.next().unwrap_or(&DATE.to_string()).as_str().into()) { Format::Iso8601(fmt) } else if matches.contains_id(OPT_RFC_EMAIL) { diff --git a/src/uu/dd/src/parseargs.rs b/src/uu/dd/src/parseargs.rs index a0475477eca..96ac55d75d2 100644 --- a/src/uu/dd/src/parseargs.rs +++ b/src/uu/dd/src/parseargs.rs @@ -529,7 +529,7 @@ fn parse_flag_list>( matches: &Matches, ) -> Result, ParseError> { matches - .values_of(tag) + .get_many::(tag) .unwrap_or_default() .map(|f| f.parse()) .collect() diff --git a/src/uu/df/src/columns.rs b/src/uu/df/src/columns.rs index d87a9946645..f1c1ffec0be 100644 --- a/src/uu/df/src/columns.rs +++ b/src/uu/df/src/columns.rs @@ -93,7 +93,10 @@ impl Column { // Unwrapping should not panic because in this arm of // the `match` statement, we know that `OPT_OUTPUT` // is non-empty. - let names = matches.values_of(OPT_OUTPUT).unwrap(); + let names = matches + .get_many::(OPT_OUTPUT) + .unwrap() + .map(|s| s.as_str()); let mut seen: Vec<&str> = vec![]; let mut columns = vec![]; for name in names { diff --git a/src/uu/df/src/df.rs b/src/uu/df/src/df.rs index 75eee7bdebe..250786acd1e 100644 --- a/src/uu/df/src/df.rs +++ b/src/uu/df/src/df.rs @@ -442,7 +442,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let opt = Options::from(&matches).map_err(DfError::OptionsError)?; // Get the list of filesystems to display in the output table. - let filesystems: Vec = match matches.values_of(OPT_PATHS) { + let filesystems: Vec = match matches.get_many::(OPT_PATHS) { None => { let filesystems = get_all_filesystems(&opt) .map_err_context(|| "cannot read table of mounted file systems".into())?; @@ -454,7 +454,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { filesystems } Some(paths) => { - let paths: Vec<&str> = paths.collect(); + let paths: Vec<_> = paths.collect(); let filesystems = get_named_filesystems(&paths, &opt) .map_err_context(|| "cannot read table of mounted file systems".into())?; diff --git a/src/uu/dircolors/src/dircolors.rs b/src/uu/dircolors/src/dircolors.rs index 6d9ec86266e..5a014eafe68 100644 --- a/src/uu/dircolors/src/dircolors.rs +++ b/src/uu/dircolors/src/dircolors.rs @@ -72,7 +72,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(&args); let files = matches - .values_of(options::FILE) + .get_many::(options::FILE) .map_or(vec![], |file_values| file_values.collect()); // clap provides .conflicts_with / .conflicts_with_all, but we want to diff --git a/src/uu/dirname/src/dirname.rs b/src/uu/dirname/src/dirname.rs index f8aee765f0c..5b7fa3c56f7 100644 --- a/src/uu/dirname/src/dirname.rs +++ b/src/uu/dirname/src/dirname.rs @@ -43,9 +43,9 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { }; let dirnames: Vec = matches - .values_of(options::DIR) + .get_many::(options::DIR) .unwrap_or_default() - .map(str::to_owned) + .map(|s| s.to_owned()) .collect(); if !dirnames.is_empty() { diff --git a/src/uu/du/src/du.rs b/src/uu/du/src/du.rs index 3187f4da204..08d4ef0e903 100644 --- a/src/uu/du/src/du.rs +++ b/src/uu/du/src/du.rs @@ -491,12 +491,12 @@ fn file_as_vec(filename: impl AsRef) -> Vec { // to ignore the files fn build_exclude_patterns(matches: &ArgMatches) -> UResult> { let exclude_from_iterator = matches - .values_of(options::EXCLUDE_FROM) + .get_many::(options::EXCLUDE_FROM) .unwrap_or_default() .flat_map(|f| file_as_vec(&f)); let excludes_iterator = matches - .values_of(options::EXCLUDE) + .get_many::(options::EXCLUDE) .unwrap_or_default() .map(|v| v.to_owned()); @@ -538,7 +538,11 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { }; let files = match matches.value_of(options::FILE) { - Some(_) => matches.values_of(options::FILE).unwrap().collect(), + Some(_) => matches + .get_many::(options::FILE) + .unwrap() + .map(|s| s.as_str()) + .collect(), None => vec!["."], }; diff --git a/src/uu/echo/src/echo.rs b/src/uu/echo/src/echo.rs index 89580b7a678..f02f938f292 100644 --- a/src/uu/echo/src/echo.rs +++ b/src/uu/echo/src/echo.rs @@ -117,7 +117,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let no_newline = matches.contains_id(options::NO_NEWLINE); let escaped = matches.contains_id(options::ENABLE_BACKSLASH_ESCAPE); - let values: Vec = match matches.values_of(options::STRING) { + let values: Vec = match matches.get_many::(options::STRING) { Some(s) => s.map(|s| s.to_string()).collect(), None => vec!["".to_string()], }; diff --git a/src/uu/env/src/env.rs b/src/uu/env/src/env.rs index 74c02cad147..7590feb8856 100644 --- a/src/uu/env/src/env.rs +++ b/src/uu/env/src/env.rs @@ -178,14 +178,14 @@ fn run_env(args: impl uucore::Args) -> UResult<()> { let ignore_env = matches.contains_id("ignore-environment"); let null = matches.contains_id("null"); let running_directory = matches.value_of("chdir"); - let files = matches - .values_of("file") - .map(Iterator::collect) - .unwrap_or_else(|| Vec::with_capacity(0)); - let unsets = matches - .values_of("unset") - .map(Iterator::collect) - .unwrap_or_else(|| Vec::with_capacity(0)); + let files = match matches.get_many::("file") { + Some(v) => v.map(|s| s.as_str()).collect(), + None => Vec::with_capacity(0), + }; + let unsets = match matches.get_many::("unset") { + Some(v) => v.map(|s| s.as_str()).collect(), + None => Vec::with_capacity(0), + }; let mut opts = Options { ignore_env, @@ -222,7 +222,7 @@ fn run_env(args: impl uucore::Args) -> UResult<()> { begin_prog_opts = parse_name_value_opt(&mut opts, external)?; } - if let Some(mut iter) = matches.values_of("") { + if let Some(mut iter) = matches.get_many::("") { // read NAME=VALUE arguments (and up to a single program argument) while !begin_prog_opts { if let Some(opt) = iter.next() { diff --git a/src/uu/expand/src/expand.rs b/src/uu/expand/src/expand.rs index 469097963bf..06d90367964 100644 --- a/src/uu/expand/src/expand.rs +++ b/src/uu/expand/src/expand.rs @@ -211,8 +211,8 @@ struct Options { impl Options { fn new(matches: &ArgMatches) -> Result { - let (remaining_mode, tabstops) = match matches.values_of(options::TABS) { - Some(s) => tabstops_parse(&s.collect::>().join(","))?, + let (remaining_mode, tabstops) = match matches.get_many::(options::TABS) { + Some(s) => tabstops_parse(&s.map(|s| s.as_str()).collect::>().join(","))?, None => (RemainingMode::None, vec![DEFAULT_TABSTOP]), }; @@ -232,7 +232,7 @@ impl Options { .unwrap(); // length of tabstops is guaranteed >= 1 let tspaces = " ".repeat(nspaces); - let files: Vec = match matches.values_of(options::FILES) { + let files: Vec = match matches.get_many::(options::FILES) { Some(s) => s.map(|v| v.to_string()).collect(), None => vec!["-".to_owned()], }; diff --git a/src/uu/factor/src/cli.rs b/src/uu/factor/src/cli.rs index a8e02261cad..635f215d498 100644 --- a/src/uu/factor/src/cli.rs +++ b/src/uu/factor/src/cli.rs @@ -53,7 +53,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let mut w = io::BufWriter::with_capacity(4 * 1024, stdout.lock()); let mut factors_buffer = String::new(); - if let Some(values) = matches.values_of(options::NUMBER) { + if let Some(values) = matches.get_many::(options::NUMBER) { for number in values { if let Err(e) = print_factors_str(number, &mut w, &mut factors_buffer) { show_warning!("{}: {}", number.maybe_quote(), e); diff --git a/src/uu/fmt/src/fmt.rs b/src/uu/fmt/src/fmt.rs index bae78886adc..b830fd189f6 100644 --- a/src/uu/fmt/src/fmt.rs +++ b/src/uu/fmt/src/fmt.rs @@ -70,7 +70,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); let mut files: Vec = matches - .values_of(ARG_FILES) + .get_many::(ARG_FILES) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/fold/src/fold.rs b/src/uu/fold/src/fold.rs index 720bcc92cce..6484a56f940 100644 --- a/src/uu/fold/src/fold.rs +++ b/src/uu/fold/src/fold.rs @@ -55,7 +55,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { None => 80, }; - let files = match matches.values_of(options::FILE) { + let files = match matches.get_many::(options::FILE) { Some(v) => v.map(|v| v.to_owned()).collect(), None => vec!["-".to_owned()], }; diff --git a/src/uu/groups/src/groups.rs b/src/uu/groups/src/groups.rs index dd218803355..e1ddb7edc6a 100644 --- a/src/uu/groups/src/groups.rs +++ b/src/uu/groups/src/groups.rs @@ -73,7 +73,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); let users: Vec = matches - .values_of(options::USERS) + .get_many::(options::USERS) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/head/src/head.rs b/src/uu/head/src/head.rs index fa83d59f4e4..65fbae3a361 100644 --- a/src/uu/head/src/head.rs +++ b/src/uu/head/src/head.rs @@ -202,7 +202,7 @@ impl HeadOptions { options.mode = Mode::from(&matches)?; - options.files = match matches.values_of(options::FILES_NAME) { + options.files = match matches.get_many::(options::FILES_NAME) { Some(v) => v.map(|s| s.to_owned()).collect(), None => vec!["-".to_owned()], }; diff --git a/src/uu/id/src/id.rs b/src/uu/id/src/id.rs index 50ec3394e4f..fcb2ec19efd 100644 --- a/src/uu/id/src/id.rs +++ b/src/uu/id/src/id.rs @@ -131,7 +131,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().after_help(&after_help[..]).get_matches_from(args); let users: Vec = matches - .values_of(options::ARG_USERS) + .get_many::(options::ARG_USERS) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/install/src/install.rs b/src/uu/install/src/install.rs index 8712b2db01e..44ca4aafde6 100644 --- a/src/uu/install/src/install.rs +++ b/src/uu/install/src/install.rs @@ -174,7 +174,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); let paths: Vec = matches - .values_of(ARG_FILES) + .get_many::(ARG_FILES) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/join/src/join.rs b/src/uu/join/src/join.rs index 0c667ff3514..a987a174491 100644 --- a/src/uu/join/src/join.rs +++ b/src/uu/join/src/join.rs @@ -608,14 +608,14 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let mut settings: Settings = Default::default(); - let v_values = matches.values_of("v"); + let v_values = matches.get_many::("v"); if v_values.is_some() { settings.print_joined = false; } let unpaired = v_values .unwrap_or_default() - .chain(matches.values_of("a").unwrap_or_default()); + .chain(matches.get_many("a").unwrap_or_default()); for file_num in unpaired { match parse_file_number(file_num)? { FileNum::File1 => settings.print_unpaired1 = true, diff --git a/src/uu/kill/src/kill.rs b/src/uu/kill/src/kill.rs index c79164e13ef..3c8f62d591f 100644 --- a/src/uu/kill/src/kill.rs +++ b/src/uu/kill/src/kill.rs @@ -54,7 +54,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { }; let pids_or_signals: Vec = matches - .values_of(options::PIDS_OR_SIGNALS) + .get_many::(options::PIDS_OR_SIGNALS) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/ln/src/ln.rs b/src/uu/ln/src/ln.rs index e85fd636ec9..9530b7f9a56 100644 --- a/src/uu/ln/src/ln.rs +++ b/src/uu/ln/src/ln.rs @@ -141,7 +141,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { /* the list of files */ let paths: Vec = matches - .values_of(ARG_FILES) + .get_many::(ARG_FILES) .unwrap() .map(PathBuf::from) .collect(); diff --git a/src/uu/ls/src/ls.rs b/src/uu/ls/src/ls.rs index 8caff423274..9a3f6ac893c 100644 --- a/src/uu/ls/src/ls.rs +++ b/src/uu/ls/src/ls.rs @@ -730,7 +730,11 @@ impl Config { ignore_patterns.push(Pattern::new(".*~").unwrap()); } - for pattern in options.values_of(options::IGNORE).into_iter().flatten() { + for pattern in options + .get_many::(options::IGNORE) + .into_iter() + .flatten() + { match Pattern::new(pattern) { Ok(p) => { ignore_patterns.push(p); @@ -740,7 +744,11 @@ impl Config { } if files == Files::Normal { - for pattern in options.values_of(options::HIDE).into_iter().flatten() { + for pattern in options + .get_many::(options::HIDE) + .into_iter() + .flatten() + { match Pattern::new(pattern) { Ok(p) => { ignore_patterns.push(p); diff --git a/src/uu/mkfifo/src/mkfifo.rs b/src/uu/mkfifo/src/mkfifo.rs index 236cfccc41e..3530b5c9e79 100644 --- a/src/uu/mkfifo/src/mkfifo.rs +++ b/src/uu/mkfifo/src/mkfifo.rs @@ -49,7 +49,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { None => 0o666, }; - let fifos: Vec = match matches.values_of(options::FIFO) { + let fifos: Vec = match matches.get_many::(options::FIFO) { Some(v) => v.clone().map(|s| s.to_owned()).collect(), None => return Err(USimpleError::new(1, "missing operand")), }; diff --git a/src/uu/more/src/more.rs b/src/uu/more/src/more.rs index 3716ebdd091..d4be472c86b 100644 --- a/src/uu/more/src/more.rs +++ b/src/uu/more/src/more.rs @@ -55,11 +55,11 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let mut buff = String::new(); let silent = matches.contains_id(options::SILENT); - if let Some(files) = matches.values_of(options::FILES) { + if let Some(files) = matches.get_many::(options::FILES) { let mut stdout = setup_term(); let length = files.len(); - let mut files_iter = files.peekable(); + let mut files_iter = files.map(|s| s.as_str()).peekable(); while let (Some(file), next_file) = (files_iter.next(), files_iter.peek()) { let file = Path::new(file); if file.is_dir() { diff --git a/src/uu/nice/src/nice.rs b/src/uu/nice/src/nice.rs index a77d143b12b..e270e03b74d 100644 --- a/src/uu/nice/src/nice.rs +++ b/src/uu/nice/src/nice.rs @@ -79,7 +79,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { } let cstrs: Vec = matches - .values_of(options::COMMAND) + .get_many::(options::COMMAND) .unwrap() .map(|x| CString::new(x.as_bytes()).unwrap()) .collect(); diff --git a/src/uu/nl/src/nl.rs b/src/uu/nl/src/nl.rs index 4f340869c74..7cea6f80f4a 100644 --- a/src/uu/nl/src/nl.rs +++ b/src/uu/nl/src/nl.rs @@ -116,7 +116,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { } let mut read_stdin = false; - let files: Vec = match matches.values_of(options::FILE) { + let files: Vec = match matches.get_many::(options::FILE) { Some(v) => v.clone().map(|v| v.to_owned()).collect(), None => vec!["-".to_owned()], }; diff --git a/src/uu/nohup/src/nohup.rs b/src/uu/nohup/src/nohup.rs index 0f05e6eab8e..600dff3881f 100644 --- a/src/uu/nohup/src/nohup.rs +++ b/src/uu/nohup/src/nohup.rs @@ -101,7 +101,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { }; let cstrs: Vec = matches - .values_of(options::CMD) + .get_many::(options::CMD) .unwrap() .map(|x| CString::new(x.as_bytes()).unwrap()) .collect(); diff --git a/src/uu/numfmt/src/numfmt.rs b/src/uu/numfmt/src/numfmt.rs index 8c55523af75..d259d001dd6 100644 --- a/src/uu/numfmt/src/numfmt.rs +++ b/src/uu/numfmt/src/numfmt.rs @@ -269,8 +269,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let options = parse_options(&matches).map_err(NumfmtError::IllegalArgument)?; - let result = match matches.values_of(options::NUMBER) { - Some(values) => handle_args(values, &options), + let result = match matches.get_many::(options::NUMBER) { + Some(values) => handle_args(values.map(|s| s.as_str()), &options), None => { let stdin = std::io::stdin(); let mut locked_stdin = stdin.lock(); diff --git a/src/uu/od/src/parse_inputs.rs b/src/uu/od/src/parse_inputs.rs index c30dfe9142e..9e04abcc37d 100644 --- a/src/uu/od/src/parse_inputs.rs +++ b/src/uu/od/src/parse_inputs.rs @@ -12,8 +12,8 @@ pub trait CommandLineOpts { /// Implementation for `getopts` impl CommandLineOpts for ArgMatches { fn inputs(&self) -> Vec<&str> { - self.values_of(options::FILENAME) - .map(|values| values.collect()) + self.get_many::(options::FILENAME) + .map(|values| values.map(|s| s.as_str()).collect()) .unwrap_or_default() } diff --git a/src/uu/paste/src/paste.rs b/src/uu/paste/src/paste.rs index 882da7aedcc..70d615f04ea 100644 --- a/src/uu/paste/src/paste.rs +++ b/src/uu/paste/src/paste.rs @@ -59,7 +59,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let serial = matches.contains_id(options::SERIAL); let delimiters = matches.value_of(options::DELIMITER).unwrap(); let files = matches - .values_of(options::FILE) + .get_many::(options::FILE) .unwrap() .map(|s| s.to_owned()) .collect(); diff --git a/src/uu/pathchk/src/pathchk.rs b/src/uu/pathchk/src/pathchk.rs index 0f21448cf88..53689e4ffac 100644 --- a/src/uu/pathchk/src/pathchk.rs +++ b/src/uu/pathchk/src/pathchk.rs @@ -46,9 +46,9 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); // set working mode - let is_posix = matches.values_of(options::POSIX).is_some(); - let is_posix_special = matches.values_of(options::POSIX_SPECIAL).is_some(); - let is_portability = matches.values_of(options::PORTABILITY).is_some(); + let is_posix = matches.get_many::(options::POSIX).is_some(); + let is_posix_special = matches.get_many::(options::POSIX_SPECIAL).is_some(); + let is_portability = matches.get_many::(options::PORTABILITY).is_some(); let mode = if (is_posix && is_posix_special) || is_portability { Mode::Both @@ -61,7 +61,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { }; // take necessary actions - let paths = matches.values_of(options::PATH); + let paths = matches.get_many::(options::PATH); if paths.is_none() { return Err(UUsageError::new(1, "missing operand")); } diff --git a/src/uu/pinky/src/pinky.rs b/src/uu/pinky/src/pinky.rs index ab533928193..6235566b142 100644 --- a/src/uu/pinky/src/pinky.rs +++ b/src/uu/pinky/src/pinky.rs @@ -58,7 +58,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().after_help(&after_help[..]).get_matches_from(args); let users: Vec = matches - .values_of(options::USER) + .get_many::(options::USER) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/pr/src/pr.rs b/src/uu/pr/src/pr.rs index 4fcfa00cd74..e062b6c7fad 100644 --- a/src/uu/pr/src/pr.rs +++ b/src/uu/pr/src/pr.rs @@ -405,8 +405,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { } let mut files = matches - .values_of(options::FILES) - .map(|v| v.collect::>()) + .get_many::(options::FILES) + .map(|v| v.map(|s| s.as_str()).collect::>()) .unwrap_or_default() .clone(); if files.is_empty() { diff --git a/src/uu/printenv/src/printenv.rs b/src/uu/printenv/src/printenv.rs index f186a27b2ac..fe550b96710 100644 --- a/src/uu/printenv/src/printenv.rs +++ b/src/uu/printenv/src/printenv.rs @@ -23,7 +23,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); let variables: Vec = matches - .values_of(ARG_VARIABLES) + .get_many::(ARG_VARIABLES) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/printf/src/printf.rs b/src/uu/printf/src/printf.rs index 662db1ed579..b0c3e0b5081 100644 --- a/src/uu/printf/src/printf.rs +++ b/src/uu/printf/src/printf.rs @@ -279,7 +279,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let format_string = matches .value_of(options::FORMATSTRING) .ok_or_else(|| UUsageError::new(1, "missing operand"))?; - let values: Vec = match matches.values_of(options::ARGUMENT) { + let values: Vec = match matches.get_many::(options::ARGUMENT) { Some(s) => s.map(|s| s.to_string()).collect(), None => vec![], }; diff --git a/src/uu/ptx/src/ptx.rs b/src/uu/ptx/src/ptx.rs index db18bc4e9d6..cb593c356c7 100644 --- a/src/uu/ptx/src/ptx.rs +++ b/src/uu/ptx/src/ptx.rs @@ -729,7 +729,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { // let mut opts = Options::new(); let matches = uu_app().get_matches_from(args); - let mut input_files: Vec = match &matches.values_of(options::FILE) { + let mut input_files: Vec = match &matches.get_many::(options::FILE) { Some(v) => v.clone().map(|v| v.to_owned()).collect(), None => vec!["-".to_string()], }; diff --git a/src/uu/readlink/src/readlink.rs b/src/uu/readlink/src/readlink.rs index 2f5da16ad29..c89752ad6b9 100644 --- a/src/uu/readlink/src/readlink.rs +++ b/src/uu/readlink/src/readlink.rs @@ -59,7 +59,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { }; let files: Vec = matches - .values_of(ARG_FILES) + .get_many::(ARG_FILES) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); if files.is_empty() { diff --git a/src/uu/realpath/src/realpath.rs b/src/uu/realpath/src/realpath.rs index 7c4854a2132..ea5d7f795e9 100644 --- a/src/uu/realpath/src/realpath.rs +++ b/src/uu/realpath/src/realpath.rs @@ -46,7 +46,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { /* the list of files */ let paths: Vec = matches - .values_of(ARG_FILES) + .get_many::(ARG_FILES) .unwrap() .map(PathBuf::from) .collect(); diff --git a/src/uu/rm/src/rm.rs b/src/uu/rm/src/rm.rs index 47e695d628e..a55d3f2d163 100644 --- a/src/uu/rm/src/rm.rs +++ b/src/uu/rm/src/rm.rs @@ -81,7 +81,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().after_help(&long_usage[..]).get_matches_from(args); let files: Vec = matches - .values_of(ARG_FILES) + .get_many::(ARG_FILES) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/seq/src/seq.rs b/src/uu/seq/src/seq.rs index 9029c768e5c..99cc3e0209a 100644 --- a/src/uu/seq/src/seq.rs +++ b/src/uu/seq/src/seq.rs @@ -61,7 +61,10 @@ type RangeFloat = (ExtendedBigDecimal, ExtendedBigDecimal, ExtendedBigDecimal); pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); - let numbers = matches.values_of(ARG_NUMBERS).unwrap().collect::>(); + let numbers = matches + .get_many::(ARG_NUMBERS) + .unwrap() + .collect::>(); let options = SeqOptions { separator: matches.value_of(OPT_SEPARATOR).unwrap_or("\n").to_string(), diff --git a/src/uu/shred/src/shred.rs b/src/uu/shred/src/shred.rs index 07f437a3033..e0ab886bb50 100644 --- a/src/uu/shred/src/shred.rs +++ b/src/uu/shred/src/shred.rs @@ -306,7 +306,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let zero = matches.contains_id(options::ZERO); let verbose = matches.contains_id(options::VERBOSE); - for path_str in matches.values_of(options::FILE).unwrap() { + for path_str in matches.get_many::(options::FILE).unwrap() { show_if_err!(wipe_file( path_str, iterations, remove, size, exact, zero, verbose, force, )); diff --git a/src/uu/shuf/src/shuf.rs b/src/uu/shuf/src/shuf.rs index b880e0c8d41..418924ec797 100644 --- a/src/uu/shuf/src/shuf.rs +++ b/src/uu/shuf/src/shuf.rs @@ -7,7 +7,7 @@ // spell-checker:ignore (ToDO) cmdline evec seps rvec fdata -use clap::{crate_version, Arg, Command, Values}; +use clap::{crate_version, Arg, Command}; use memchr::memchr_iter; use rand::prelude::SliceRandom; use rand::RngCore; @@ -62,7 +62,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); - let mode = if let Some(args) = matches.values_of(options::ECHO) { + let mode = if let Some(args) = matches.get_many::(options::ECHO) { Mode::Echo(args.map(String::from).collect()) } else if let Some(range) = matches.value_of(options::INPUT_RANGE) { match parse_range(range) { @@ -77,9 +77,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let options = Options { head_count: { - let mut headcounts: Values<'_> = - matches.values_of(options::HEAD_COUNT).unwrap_or_default(); - match parse_head_count(&mut headcounts) { + let headcounts = matches + .get_many::(options::HEAD_COUNT) + .unwrap_or_default() + .map(|s| s.to_owned()) + .collect(); + match parse_head_count(headcounts) { Ok(val) => val, Err(msg) => return Err(USimpleError::new(1, msg)), } @@ -295,7 +298,7 @@ fn parse_range(input_range: &str) -> Result<(usize, usize), String> { } } -fn parse_head_count(headcounts: &mut Values<'_>) -> Result { +fn parse_head_count(headcounts: Vec) -> Result { let mut result = std::usize::MAX; for count in headcounts { match count.parse::() { diff --git a/src/uu/sleep/src/sleep.rs b/src/uu/sleep/src/sleep.rs index 17c3939821e..b48bfd8494a 100644 --- a/src/uu/sleep/src/sleep.rs +++ b/src/uu/sleep/src/sleep.rs @@ -33,8 +33,8 @@ mod options { pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().try_get_matches_from(args)?; - if let Some(values) = matches.values_of(options::NUMBER) { - let numbers = values.collect::>(); + if let Some(values) = matches.get_many::(options::NUMBER) { + let numbers = values.map(|s| s.as_str()).collect::>(); return sleep(&numbers); } diff --git a/src/uu/sort/src/sort.rs b/src/uu/sort/src/sort.rs index 7a0ac21d2eb..5b2cbc7146d 100644 --- a/src/uu/sort/src/sort.rs +++ b/src/uu/sort/src/sort.rs @@ -1228,7 +1228,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { settings.separator = Some(separator.chars().next().unwrap()); } - if let Some(values) = matches.values_of(options::KEY) { + if let Some(values) = matches.get_many::(options::KEY) { for value in values { let selector = FieldSelector::parse(value, &settings)?; if selector.settings.mode == SortMode::Random && settings.salt.is_none() { diff --git a/src/uu/sum/src/sum.rs b/src/uu/sum/src/sum.rs index 3c197c02901..01758d90af1 100644 --- a/src/uu/sum/src/sum.rs +++ b/src/uu/sum/src/sum.rs @@ -115,7 +115,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); - let files: Vec = match matches.values_of(options::FILE) { + let files: Vec = match matches.get_many::(options::FILE) { Some(v) => v.clone().map(|v| v.to_owned()).collect(), None => vec!["-".to_owned()], }; diff --git a/src/uu/sync/src/sync.rs b/src/uu/sync/src/sync.rs index fcefd6494b8..937187097e3 100644 --- a/src/uu/sync/src/sync.rs +++ b/src/uu/sync/src/sync.rs @@ -168,7 +168,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); let files: Vec = matches - .values_of(ARG_FILES) + .get_many::(ARG_FILES) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/tac/src/tac.rs b/src/uu/tac/src/tac.rs index 07f0ffe15bf..f6baed971b6 100644 --- a/src/uu/tac/src/tac.rs +++ b/src/uu/tac/src/tac.rs @@ -52,8 +52,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { raw_separator }; - let files: Vec<&str> = match matches.values_of(options::FILE) { - Some(v) => v.collect(), + let files: Vec<&str> = match matches.get_many::(options::FILE) { + Some(v) => v.map(|s| s.as_str()).collect(), None => vec!["-"], }; diff --git a/src/uu/tail/src/tail.rs b/src/uu/tail/src/tail.rs index 7ac33f311e8..0b5a0b81611 100644 --- a/src/uu/tail/src/tail.rs +++ b/src/uu/tail/src/tail.rs @@ -264,7 +264,7 @@ impl Settings { settings.stdin_is_pipe_or_fifo = matches.contains_id(options::PRESUME_INPUT_PIPE); settings.paths = matches - .values_of(options::ARG_FILES) + .get_many::(options::ARG_FILES) .map(|v| v.map(PathBuf::from).collect()) .unwrap_or_default(); diff --git a/src/uu/tee/src/tee.rs b/src/uu/tee/src/tee.rs index 3a6c1d3dbdf..4d8d7c1a0a2 100644 --- a/src/uu/tee/src/tee.rs +++ b/src/uu/tee/src/tee.rs @@ -57,7 +57,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { append: matches.contains_id(options::APPEND), ignore_interrupts: matches.contains_id(options::IGNORE_INTERRUPTS), files: matches - .values_of(options::FILE) + .get_many::(options::FILE) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(), output_error: { diff --git a/src/uu/timeout/src/timeout.rs b/src/uu/timeout/src/timeout.rs index fe71f6625d0..187294ba305 100644 --- a/src/uu/timeout/src/timeout.rs +++ b/src/uu/timeout/src/timeout.rs @@ -87,7 +87,7 @@ impl Config { let verbose = options.contains_id(options::VERBOSE); let command = options - .values_of(options::COMMAND) + .get_many::(options::COMMAND) .unwrap() .map(String::from) .collect::>(); diff --git a/src/uu/tr/src/tr.rs b/src/uu/tr/src/tr.rs index c8dcff528a4..3208a7ee15f 100644 --- a/src/uu/tr/src/tr.rs +++ b/src/uu/tr/src/tr.rs @@ -54,7 +54,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let truncate_set1_flag = matches.contains_id(options::TRUNCATE_SET1); let sets = matches - .values_of(options::SETS) + .get_many::(options::SETS) .map(|v| { v.map(ToString::to_string) .map(|input| convert::reduce_octal_to_char(&input)) diff --git a/src/uu/truncate/src/truncate.rs b/src/uu/truncate/src/truncate.rs index 437fbf6984a..3710abbb6eb 100644 --- a/src/uu/truncate/src/truncate.rs +++ b/src/uu/truncate/src/truncate.rs @@ -122,7 +122,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { })?; let files: Vec = matches - .values_of(options::ARG_FILES) + .get_many::(options::ARG_FILES) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/unexpand/src/unexpand.rs b/src/uu/unexpand/src/unexpand.rs index 341ef340ef5..1b67785a249 100644 --- a/src/uu/unexpand/src/unexpand.rs +++ b/src/uu/unexpand/src/unexpand.rs @@ -104,9 +104,9 @@ struct Options { impl Options { fn new(matches: &clap::ArgMatches) -> Result { - let tabstops = match matches.values_of(options::TABS) { + let tabstops = match matches.get_many::(options::TABS) { None => vec![DEFAULT_TABSTOP], - Some(s) => tabstops_parse(&s.collect::>().join(","))?, + Some(s) => tabstops_parse(&s.map(|s| s.as_str()).collect::>().join(","))?, }; let aflag = (matches.contains_id(options::ALL) || matches.contains_id(options::TABS)) diff --git a/src/uu/uniq/src/uniq.rs b/src/uu/uniq/src/uniq.rs index 6c86d487c90..74c90e149f5 100644 --- a/src/uu/uniq/src/uniq.rs +++ b/src/uu/uniq/src/uniq.rs @@ -260,7 +260,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().after_help(&long_usage[..]).get_matches_from(args); let files: Vec = matches - .values_of(ARG_FILES) + .get_many::(ARG_FILES) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/who/src/who.rs b/src/uu/who/src/who.rs index afd606fc880..a01cb0dda68 100644 --- a/src/uu/who/src/who.rs +++ b/src/uu/who/src/who.rs @@ -65,7 +65,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().after_help(&after_help[..]).get_matches_from(args); let files: Vec = matches - .values_of(options::FILE) + .get_many::(options::FILE) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default(); diff --git a/src/uu/yes/src/yes.rs b/src/uu/yes/src/yes.rs index 7b88b26a46e..791e720367b 100644 --- a/src/uu/yes/src/yes.rs +++ b/src/uu/yes/src/yes.rs @@ -28,7 +28,7 @@ const BUF_SIZE: usize = 16 * 1024; pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().get_matches_from(args); - let string = if let Some(values) = matches.values_of("STRING") { + let string = if let Some(values) = matches.get_many::("STRING") { let mut result = values.fold(String::new(), |res, s| res + s + " "); result.pop(); result.push('\n'); diff --git a/src/uucore/src/lib/features/perms.rs b/src/uucore/src/lib/features/perms.rs index c49207c57bf..312f5f164a0 100644 --- a/src/uucore/src/lib/features/perms.rs +++ b/src/uucore/src/lib/features/perms.rs @@ -466,7 +466,7 @@ pub fn chown_base<'a>( let matches = command.get_matches_from(args); let files: Vec = matches - .values_of(options::ARG_FILES) + .get_many::(options::ARG_FILES) .map(|v| v.map(ToString::to_string).collect()) .unwrap_or_default();