mirror of
https://github.com/uutils/coreutils
synced 2024-12-14 07:12:44 +00:00
Merge pull request #3871 from cakebaker/clap_replace_deprecated_occurrences_of
Replace deprecated occurrences_of()
This commit is contained in:
commit
9afb2e7038
8 changed files with 50 additions and 40 deletions
|
@ -60,8 +60,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
||||||
let opt_multiple = matches.contains_id(options::MULTIPLE);
|
let opt_multiple = matches.contains_id(options::MULTIPLE);
|
||||||
let opt_zero = matches.contains_id(options::ZERO);
|
let opt_zero = matches.contains_id(options::ZERO);
|
||||||
let multiple_paths = opt_suffix || opt_multiple;
|
let multiple_paths = opt_suffix || opt_multiple;
|
||||||
|
let name_args_count = matches
|
||||||
|
.get_many::<String>(options::NAME)
|
||||||
|
.map(|n| n.len())
|
||||||
|
.unwrap_or(0);
|
||||||
|
|
||||||
// too many arguments
|
// too many arguments
|
||||||
if !multiple_paths && matches.occurrences_of(options::NAME) > 2 {
|
if !multiple_paths && name_args_count > 2 {
|
||||||
return Err(UUsageError::new(
|
return Err(UUsageError::new(
|
||||||
1,
|
1,
|
||||||
format!(
|
format!(
|
||||||
|
@ -78,7 +83,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
||||||
|
|
||||||
let suffix = if opt_suffix {
|
let suffix = if opt_suffix {
|
||||||
matches.value_of(options::SUFFIX).unwrap()
|
matches.value_of(options::SUFFIX).unwrap()
|
||||||
} else if !opt_multiple && matches.occurrences_of(options::NAME) > 1 {
|
} else if !opt_multiple && name_args_count > 1 {
|
||||||
matches
|
matches
|
||||||
.get_many::<String>(options::NAME)
|
.get_many::<String>(options::NAME)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
// * file that was distributed with this source code.
|
// * file that was distributed with this source code.
|
||||||
// spell-checker:ignore itotal iused iavail ipcent pcent squashfs
|
// spell-checker:ignore itotal iused iavail ipcent pcent squashfs
|
||||||
use crate::{OPT_INODES, OPT_OUTPUT, OPT_PRINT_TYPE};
|
use crate::{OPT_INODES, OPT_OUTPUT, OPT_PRINT_TYPE};
|
||||||
use clap::ArgMatches;
|
use clap::{ArgMatches, ValueSource};
|
||||||
|
|
||||||
/// The columns in the output table produced by `df`.
|
/// The columns in the output table produced by `df`.
|
||||||
///
|
///
|
||||||
|
@ -77,7 +77,7 @@ impl Column {
|
||||||
match (
|
match (
|
||||||
matches.contains_id(OPT_PRINT_TYPE),
|
matches.contains_id(OPT_PRINT_TYPE),
|
||||||
matches.contains_id(OPT_INODES),
|
matches.contains_id(OPT_INODES),
|
||||||
matches.occurrences_of(OPT_OUTPUT) > 0,
|
matches.value_source(OPT_OUTPUT) == Some(ValueSource::CommandLine),
|
||||||
) {
|
) {
|
||||||
(false, false, false) => Ok(vec![
|
(false, false, false) => Ok(vec![
|
||||||
Self::Source,
|
Self::Source,
|
||||||
|
|
|
@ -20,7 +20,7 @@ use uucore::fsext::{read_fs_list, MountInfo};
|
||||||
use uucore::parse_size::ParseSizeError;
|
use uucore::parse_size::ParseSizeError;
|
||||||
use uucore::{format_usage, show};
|
use uucore::{format_usage, show};
|
||||||
|
|
||||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
use clap::{crate_version, Arg, ArgMatches, Command, ValueSource};
|
||||||
|
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
@ -200,7 +200,7 @@ impl Options {
|
||||||
HeaderMode::PosixPortability
|
HeaderMode::PosixPortability
|
||||||
// contains_id() doesn't work here, it always returns true because OPT_OUTPUT has
|
// contains_id() doesn't work here, it always returns true because OPT_OUTPUT has
|
||||||
// default values and hence is always present
|
// default values and hence is always present
|
||||||
} else if matches.occurrences_of(OPT_OUTPUT) > 0 {
|
} else if matches.value_source(OPT_OUTPUT) == Some(ValueSource::CommandLine) {
|
||||||
HeaderMode::Output
|
HeaderMode::Output
|
||||||
} else {
|
} else {
|
||||||
HeaderMode::Default
|
HeaderMode::Default
|
||||||
|
|
|
@ -80,7 +80,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
||||||
.try_get_matches_from_mut(args)
|
.try_get_matches_from_mut(args)
|
||||||
.unwrap_or_else(|e| e.exit());
|
.unwrap_or_else(|e| e.exit());
|
||||||
|
|
||||||
if !matches.contains_id(OPT_TARGET_DIRECTORY) && matches.occurrences_of(ARG_FILES) == 1 {
|
if !matches.contains_id(OPT_TARGET_DIRECTORY)
|
||||||
|
&& matches
|
||||||
|
.get_many::<OsString>(ARG_FILES)
|
||||||
|
.map(|f| f.len())
|
||||||
|
.unwrap_or(0)
|
||||||
|
== 1
|
||||||
|
{
|
||||||
app.error(
|
app.error(
|
||||||
ErrorKind::TooFewValues,
|
ErrorKind::TooFewValues,
|
||||||
format!(
|
format!(
|
||||||
|
|
|
@ -9,7 +9,7 @@ use crate::errors::*;
|
||||||
use crate::format::format_and_print;
|
use crate::format::format_and_print;
|
||||||
use crate::options::*;
|
use crate::options::*;
|
||||||
use crate::units::{Result, Unit};
|
use crate::units::{Result, Unit};
|
||||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
use clap::{crate_version, Arg, ArgMatches, Command, ValueSource};
|
||||||
use std::io::{BufRead, Write};
|
use std::io::{BufRead, Write};
|
||||||
use units::{IEC_BASES, SI_BASES};
|
use units::{IEC_BASES, SI_BASES};
|
||||||
use uucore::display::Quotable;
|
use uucore::display::Quotable;
|
||||||
|
@ -143,9 +143,7 @@ fn parse_options(args: &ArgMatches) -> Result<NumfmtOptions> {
|
||||||
None => Ok(0),
|
None => Ok(0),
|
||||||
}?;
|
}?;
|
||||||
|
|
||||||
let header = match args.occurrences_of(options::HEADER) {
|
let header = if args.value_source(options::HEADER) == Some(ValueSource::CommandLine) {
|
||||||
0 => Ok(0),
|
|
||||||
_ => {
|
|
||||||
let value = args.value_of(options::HEADER).unwrap();
|
let value = args.value_of(options::HEADER).unwrap();
|
||||||
|
|
||||||
value
|
value
|
||||||
|
@ -156,7 +154,8 @@ fn parse_options(args: &ArgMatches) -> Result<NumfmtOptions> {
|
||||||
_ => Ok(n),
|
_ => Ok(n),
|
||||||
})
|
})
|
||||||
.map_err(|value| format!("invalid header value {}", value.quote()))
|
.map_err(|value| format!("invalid header value {}", value.quote()))
|
||||||
}
|
} else {
|
||||||
|
Ok(0)
|
||||||
}?;
|
}?;
|
||||||
|
|
||||||
let fields = match args.value_of(options::FIELD).unwrap() {
|
let fields = match args.value_of(options::FIELD).unwrap() {
|
||||||
|
|
|
@ -43,7 +43,7 @@ use crate::parse_nrofbytes::parse_number_of_bytes;
|
||||||
use crate::partialreader::*;
|
use crate::partialreader::*;
|
||||||
use crate::peekreader::*;
|
use crate::peekreader::*;
|
||||||
use crate::prn_char::format_ascii_dump;
|
use crate::prn_char::format_ascii_dump;
|
||||||
use clap::{crate_version, AppSettings, Arg, ArgMatches, Command};
|
use clap::{crate_version, AppSettings, Arg, ArgMatches, Command, ValueSource};
|
||||||
use uucore::display::Quotable;
|
use uucore::display::Quotable;
|
||||||
use uucore::error::{UResult, USimpleError};
|
use uucore::error::{UResult, USimpleError};
|
||||||
use uucore::format_usage;
|
use uucore::format_usage;
|
||||||
|
@ -167,9 +167,7 @@ impl OdOptions {
|
||||||
let mut line_bytes = match matches.value_of(options::WIDTH) {
|
let mut line_bytes = match matches.value_of(options::WIDTH) {
|
||||||
None => 16,
|
None => 16,
|
||||||
Some(s) => {
|
Some(s) => {
|
||||||
if matches.occurrences_of(options::WIDTH) == 0 {
|
if matches.value_source(options::WIDTH) == Some(ValueSource::CommandLine) {
|
||||||
16
|
|
||||||
} else {
|
|
||||||
match parse_number_of_bytes(s) {
|
match parse_number_of_bytes(s) {
|
||||||
Ok(n) => usize::try_from(n)
|
Ok(n) => usize::try_from(n)
|
||||||
.map_err(|_| USimpleError::new(1, format!("‘{}‘ is too large", s)))?,
|
.map_err(|_| USimpleError::new(1, format!("‘{}‘ is too large", s)))?,
|
||||||
|
@ -180,6 +178,8 @@ impl OdOptions {
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
16
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,7 +13,7 @@ mod platform;
|
||||||
|
|
||||||
use crate::filenames::FilenameIterator;
|
use crate::filenames::FilenameIterator;
|
||||||
use crate::filenames::SuffixType;
|
use crate::filenames::SuffixType;
|
||||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
use clap::{crate_version, Arg, ArgMatches, Command, ValueSource};
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::fs::{metadata, File};
|
use std::fs::{metadata, File};
|
||||||
|
@ -368,28 +368,28 @@ impl Strategy {
|
||||||
// `ArgGroup` since `ArgGroup` considers a default value `Arg`
|
// `ArgGroup` since `ArgGroup` considers a default value `Arg`
|
||||||
// as "defined".
|
// as "defined".
|
||||||
match (
|
match (
|
||||||
matches.occurrences_of(OPT_LINES),
|
matches.value_source(OPT_LINES) == Some(ValueSource::CommandLine),
|
||||||
matches.occurrences_of(OPT_BYTES),
|
matches.value_source(OPT_BYTES) == Some(ValueSource::CommandLine),
|
||||||
matches.occurrences_of(OPT_LINE_BYTES),
|
matches.value_source(OPT_LINE_BYTES) == Some(ValueSource::CommandLine),
|
||||||
matches.occurrences_of(OPT_NUMBER),
|
matches.value_source(OPT_NUMBER) == Some(ValueSource::CommandLine),
|
||||||
) {
|
) {
|
||||||
(0, 0, 0, 0) => Ok(Self::Lines(1000)),
|
(false, false, false, false) => Ok(Self::Lines(1000)),
|
||||||
(1, 0, 0, 0) => {
|
(true, false, false, false) => {
|
||||||
let s = matches.value_of(OPT_LINES).unwrap();
|
let s = matches.value_of(OPT_LINES).unwrap();
|
||||||
let n = parse_size(s).map_err(StrategyError::Lines)?;
|
let n = parse_size(s).map_err(StrategyError::Lines)?;
|
||||||
Ok(Self::Lines(n))
|
Ok(Self::Lines(n))
|
||||||
}
|
}
|
||||||
(0, 1, 0, 0) => {
|
(false, true, false, false) => {
|
||||||
let s = matches.value_of(OPT_BYTES).unwrap();
|
let s = matches.value_of(OPT_BYTES).unwrap();
|
||||||
let n = parse_size(s).map_err(StrategyError::Bytes)?;
|
let n = parse_size(s).map_err(StrategyError::Bytes)?;
|
||||||
Ok(Self::Bytes(n))
|
Ok(Self::Bytes(n))
|
||||||
}
|
}
|
||||||
(0, 0, 1, 0) => {
|
(false, false, true, false) => {
|
||||||
let s = matches.value_of(OPT_LINE_BYTES).unwrap();
|
let s = matches.value_of(OPT_LINE_BYTES).unwrap();
|
||||||
let n = parse_size(s).map_err(StrategyError::Bytes)?;
|
let n = parse_size(s).map_err(StrategyError::Bytes)?;
|
||||||
Ok(Self::LineBytes(n))
|
Ok(Self::LineBytes(n))
|
||||||
}
|
}
|
||||||
(0, 0, 0, 1) => {
|
(false, false, false, true) => {
|
||||||
let s = matches.value_of(OPT_NUMBER).unwrap();
|
let s = matches.value_of(OPT_NUMBER).unwrap();
|
||||||
let number_type = NumberType::from(s).map_err(StrategyError::NumberType)?;
|
let number_type = NumberType::from(s).map_err(StrategyError::NumberType)?;
|
||||||
Ok(Self::Number(number_type))
|
Ok(Self::Number(number_type))
|
||||||
|
@ -401,9 +401,9 @@ impl Strategy {
|
||||||
|
|
||||||
/// Parse the suffix type from the command-line arguments.
|
/// Parse the suffix type from the command-line arguments.
|
||||||
fn suffix_type_from(matches: &ArgMatches) -> SuffixType {
|
fn suffix_type_from(matches: &ArgMatches) -> SuffixType {
|
||||||
if matches.occurrences_of(OPT_NUMERIC_SUFFIXES) > 0 {
|
if matches.value_source(OPT_NUMERIC_SUFFIXES) == Some(ValueSource::CommandLine) {
|
||||||
SuffixType::Decimal
|
SuffixType::Decimal
|
||||||
} else if matches.occurrences_of(OPT_HEX_SUFFIXES) > 0 {
|
} else if matches.value_source(OPT_HEX_SUFFIXES) == Some(ValueSource::CommandLine) {
|
||||||
SuffixType::Hexadecimal
|
SuffixType::Hexadecimal
|
||||||
} else {
|
} else {
|
||||||
SuffixType::Alphabetic
|
SuffixType::Alphabetic
|
||||||
|
@ -515,7 +515,7 @@ impl Settings {
|
||||||
.map_err(|_| SettingsError::SuffixNotParsable(suffix_length_str.to_string()))?,
|
.map_err(|_| SettingsError::SuffixNotParsable(suffix_length_str.to_string()))?,
|
||||||
suffix_type,
|
suffix_type,
|
||||||
additional_suffix,
|
additional_suffix,
|
||||||
verbose: matches.occurrences_of("verbose") > 0,
|
verbose: matches.value_source("verbose") == Some(ValueSource::CommandLine),
|
||||||
strategy,
|
strategy,
|
||||||
input: matches.value_of(ARG_INPUT).unwrap().to_owned(),
|
input: matches.value_of(ARG_INPUT).unwrap().to_owned(),
|
||||||
prefix: matches.value_of(ARG_PREFIX).unwrap().to_owned(),
|
prefix: matches.value_of(ARG_PREFIX).unwrap().to_owned(),
|
||||||
|
|
|
@ -28,7 +28,7 @@ mod platform;
|
||||||
use crate::files::FileHandling;
|
use crate::files::FileHandling;
|
||||||
use chunks::ReverseChunks;
|
use chunks::ReverseChunks;
|
||||||
|
|
||||||
use clap::{Arg, Command};
|
use clap::{Arg, Command, ValueSource};
|
||||||
use notify::{RecommendedWatcher, RecursiveMode, Watcher, WatcherKind};
|
use notify::{RecommendedWatcher, RecursiveMode, Watcher, WatcherKind};
|
||||||
use std::collections::{HashMap, VecDeque};
|
use std::collections::{HashMap, VecDeque};
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
|
@ -140,7 +140,7 @@ impl Settings {
|
||||||
|
|
||||||
settings.follow = if matches.contains_id(options::FOLLOW_RETRY) {
|
settings.follow = if matches.contains_id(options::FOLLOW_RETRY) {
|
||||||
Some(FollowMode::Name)
|
Some(FollowMode::Name)
|
||||||
} else if matches.occurrences_of(options::FOLLOW) == 0 {
|
} else if matches.value_source(options::FOLLOW) != Some(ValueSource::CommandLine) {
|
||||||
None
|
None
|
||||||
} else if matches.value_of(options::FOLLOW) == Some("name") {
|
} else if matches.value_of(options::FOLLOW) == Some("name") {
|
||||||
Some(FollowMode::Name)
|
Some(FollowMode::Name)
|
||||||
|
|
Loading…
Reference in a new issue