diff --git a/src/uu/dircolors/Cargo.toml b/src/uu/dircolors/Cargo.toml index 1c5a1b8f8..0c2294a57 100644 --- a/src/uu/dircolors/Cargo.toml +++ b/src/uu/dircolors/Cargo.toml @@ -15,7 +15,7 @@ edition = "2021" path = "src/dircolors.rs" [dependencies] -clap = { version = "3.2", features = ["wrap_help", "cargo"] } +clap = { version = "4.0", features = ["wrap_help", "cargo"] } glob = "0.3.0" uucore = { version=">=0.0.16", package="uucore", path="../../uucore" } diff --git a/src/uu/dircolors/src/dircolors.rs b/src/uu/dircolors/src/dircolors.rs index 054c6205f..86beb9e90 100644 --- a/src/uu/dircolors/src/dircolors.rs +++ b/src/uu/dircolors/src/dircolors.rs @@ -13,7 +13,7 @@ use std::env; use std::fs::File; use std::io::{BufRead, BufReader}; -use clap::{crate_version, Arg, Command}; +use clap::{crate_version, Arg, ArgAction, Command}; use uucore::display::Quotable; use uucore::error::{UResult, USimpleError, UUsageError}; @@ -75,9 +75,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { // clap provides .conflicts_with / .conflicts_with_all, but we want to // manually handle conflicts so we can match the output of GNU coreutils - if (matches.contains_id(options::C_SHELL) || matches.contains_id(options::BOURNE_SHELL)) - && (matches.contains_id(options::PRINT_DATABASE) - || matches.contains_id(options::PRINT_LS_COLORS)) + if (matches.get_flag(options::C_SHELL) || matches.get_flag(options::BOURNE_SHELL)) + && (matches.get_flag(options::PRINT_DATABASE) || matches.get_flag(options::PRINT_LS_COLORS)) { return Err(UUsageError::new( 1, @@ -86,15 +85,14 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { )); } - if matches.contains_id(options::PRINT_DATABASE) && matches.contains_id(options::PRINT_LS_COLORS) - { + if matches.get_flag(options::PRINT_DATABASE) && matches.get_flag(options::PRINT_LS_COLORS) { return Err(UUsageError::new( 1, "options --print-database and --print-ls-colors are mutually exclusive", )); } - if matches.contains_id(options::PRINT_DATABASE) { + if matches.get_flag(options::PRINT_DATABASE) { if !files.is_empty() { return Err(UUsageError::new( 1, @@ -109,11 +107,11 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { return Ok(()); } - let mut out_format = if matches.contains_id(options::C_SHELL) { + let mut out_format = if matches.get_flag(options::C_SHELL) { OutputFmt::CShell - } else if matches.contains_id(options::BOURNE_SHELL) { + } else if matches.get_flag(options::BOURNE_SHELL) { OutputFmt::Shell - } else if matches.contains_id(options::PRINT_LS_COLORS) { + } else if matches.get_flag(options::PRINT_LS_COLORS) { OutputFmt::Display } else { OutputFmt::Unknown @@ -168,7 +166,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { } } -pub fn uu_app<'a>() -> Command<'a> { +pub fn uu_app() -> Command { Command::new(uucore::util_name()) .version(crate_version!()) .about(ABOUT) @@ -182,7 +180,7 @@ pub fn uu_app<'a>() -> Command<'a> { .visible_alias("bourne-shell") .overrides_with(options::C_SHELL) .help("output Bourne shell code to set LS_COLORS") - .display_order(1), + .action(ArgAction::SetTrue), ) .arg( Arg::new(options::C_SHELL) @@ -191,26 +189,26 @@ pub fn uu_app<'a>() -> Command<'a> { .visible_alias("c-shell") .overrides_with(options::BOURNE_SHELL) .help("output C shell code to set LS_COLORS") - .display_order(2), + .action(ArgAction::SetTrue), ) .arg( Arg::new(options::PRINT_DATABASE) .long("print-database") .short('p') .help("print the byte counts") - .display_order(3), + .action(ArgAction::SetTrue), ) .arg( Arg::new(options::PRINT_LS_COLORS) .long("print-ls-colors") .help("output fully escaped colors for display") - .display_order(4), + .action(ArgAction::SetTrue), ) .arg( Arg::new(options::FILE) .hide(true) .value_hint(clap::ValueHint::FilePath) - .multiple_occurrences(true), + .action(ArgAction::Append), ) }