mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
sort: accept shortcuts for stringly-enum arguments
This commit is contained in:
parent
70d84e168c
commit
872ec050e4
2 changed files with 63 additions and 10 deletions
|
@ -43,6 +43,7 @@ use uucore::display::Quotable;
|
||||||
use uucore::error::{set_exit_code, strip_errno, UError, UResult, USimpleError, UUsageError};
|
use uucore::error::{set_exit_code, strip_errno, UError, UResult, USimpleError, UUsageError};
|
||||||
use uucore::line_ending::LineEnding;
|
use uucore::line_ending::LineEnding;
|
||||||
use uucore::parse_size::{ParseSizeError, Parser};
|
use uucore::parse_size::{ParseSizeError, Parser};
|
||||||
|
use uucore::shortcut_value_parser::ShortcutValueParser;
|
||||||
use uucore::version_cmp::version_cmp;
|
use uucore::version_cmp::version_cmp;
|
||||||
use uucore::{format_usage, help_about, help_section, help_usage};
|
use uucore::{format_usage, help_about, help_section, help_usage};
|
||||||
|
|
||||||
|
@ -1297,14 +1298,14 @@ pub fn uu_app() -> Command {
|
||||||
.arg(
|
.arg(
|
||||||
Arg::new(options::modes::SORT)
|
Arg::new(options::modes::SORT)
|
||||||
.long(options::modes::SORT)
|
.long(options::modes::SORT)
|
||||||
.value_parser([
|
.value_parser(ShortcutValueParser::new([
|
||||||
"general-numeric",
|
"general-numeric",
|
||||||
"human-numeric",
|
"human-numeric",
|
||||||
"month",
|
"month",
|
||||||
"numeric",
|
"numeric",
|
||||||
"version",
|
"version",
|
||||||
"random",
|
"random",
|
||||||
])
|
]))
|
||||||
.conflicts_with_all(options::modes::ALL_SORT_MODES),
|
.conflicts_with_all(options::modes::ALL_SORT_MODES),
|
||||||
)
|
)
|
||||||
.arg(make_sort_mode_arg(
|
.arg(make_sort_mode_arg(
|
||||||
|
@ -1363,11 +1364,11 @@ pub fn uu_app() -> Command {
|
||||||
.long(options::check::CHECK)
|
.long(options::check::CHECK)
|
||||||
.require_equals(true)
|
.require_equals(true)
|
||||||
.num_args(0..)
|
.num_args(0..)
|
||||||
.value_parser([
|
.value_parser(ShortcutValueParser::new([
|
||||||
options::check::SILENT,
|
options::check::SILENT,
|
||||||
options::check::QUIET,
|
options::check::QUIET,
|
||||||
options::check::DIAGNOSE_FIRST,
|
options::check::DIAGNOSE_FIRST,
|
||||||
])
|
]))
|
||||||
.conflicts_with(options::OUTPUT)
|
.conflicts_with(options::OUTPUT)
|
||||||
.help("check for sorted input; do not sort"),
|
.help("check for sorted input; do not sort"),
|
||||||
)
|
)
|
||||||
|
|
|
@ -126,7 +126,16 @@ fn test_ext_sort_zero_terminated() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_months_whitespace() {
|
fn test_months_whitespace() {
|
||||||
test_helper("months-whitespace", &["-M", "--month-sort", "--sort=month"]);
|
test_helper(
|
||||||
|
"months-whitespace",
|
||||||
|
&[
|
||||||
|
"-M",
|
||||||
|
"--month-sort",
|
||||||
|
"--sort=month",
|
||||||
|
"--sort=mont", // spell-checker:disable-line
|
||||||
|
"--sort=m",
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -141,6 +150,16 @@ fn test_version_sort_unstable() {
|
||||||
.pipe_in("0.1\n0.02\n0.2\n0.002\n0.3\n")
|
.pipe_in("0.1\n0.02\n0.2\n0.002\n0.3\n")
|
||||||
.succeeds()
|
.succeeds()
|
||||||
.stdout_is("0.1\n0.002\n0.02\n0.2\n0.3\n");
|
.stdout_is("0.1\n0.002\n0.02\n0.2\n0.3\n");
|
||||||
|
new_ucmd!()
|
||||||
|
.arg("--sort=versio") // spell-checker:disable-line
|
||||||
|
.pipe_in("0.1\n0.02\n0.2\n0.002\n0.3\n")
|
||||||
|
.succeeds()
|
||||||
|
.stdout_is("0.1\n0.002\n0.02\n0.2\n0.3\n");
|
||||||
|
new_ucmd!()
|
||||||
|
.arg("--sort=v")
|
||||||
|
.pipe_in("0.1\n0.02\n0.2\n0.002\n0.3\n")
|
||||||
|
.succeeds()
|
||||||
|
.stdout_is("0.1\n0.002\n0.02\n0.2\n0.3\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -157,7 +176,14 @@ fn test_version_sort_stable() {
|
||||||
fn test_human_numeric_whitespace() {
|
fn test_human_numeric_whitespace() {
|
||||||
test_helper(
|
test_helper(
|
||||||
"human-numeric-whitespace",
|
"human-numeric-whitespace",
|
||||||
&["-h", "--human-numeric-sort", "--sort=human-numeric"],
|
&[
|
||||||
|
"-h",
|
||||||
|
"--human-numeric-sort",
|
||||||
|
"--sort=human-numeric",
|
||||||
|
"--sort=human-numeri", // spell-checker:disable-line
|
||||||
|
"--sort=human",
|
||||||
|
"--sort=h",
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,7 +203,14 @@ fn test_ext_sort_as64_bailout() {
|
||||||
fn test_multiple_decimals_general() {
|
fn test_multiple_decimals_general() {
|
||||||
test_helper(
|
test_helper(
|
||||||
"multiple_decimals_general",
|
"multiple_decimals_general",
|
||||||
&["-g", "--general-numeric-sort", "--sort=general-numeric"],
|
&[
|
||||||
|
"-g",
|
||||||
|
"--general-numeric-sort",
|
||||||
|
"--sort=general-numeric",
|
||||||
|
"--sort=general-numeri", // spell-checker:disable-line
|
||||||
|
"--sort=general",
|
||||||
|
"--sort=g",
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,7 +218,7 @@ fn test_multiple_decimals_general() {
|
||||||
fn test_multiple_decimals_numeric() {
|
fn test_multiple_decimals_numeric() {
|
||||||
test_helper(
|
test_helper(
|
||||||
"multiple_decimals_numeric",
|
"multiple_decimals_numeric",
|
||||||
&["-n", "--numeric-sort", "--sort=numeric"],
|
&["-n", "--numeric-sort", "--sort=numeric", "--sort=n"],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -784,7 +817,13 @@ fn test_pipe() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_check() {
|
fn test_check() {
|
||||||
for diagnose_arg in ["-c", "--check", "--check=diagnose-first"] {
|
for diagnose_arg in [
|
||||||
|
"-c",
|
||||||
|
"--check",
|
||||||
|
"--check=diagnose-first",
|
||||||
|
"--check=diagnose",
|
||||||
|
"--check=d",
|
||||||
|
] {
|
||||||
new_ucmd!()
|
new_ucmd!()
|
||||||
.arg(diagnose_arg)
|
.arg(diagnose_arg)
|
||||||
.arg("check_fail.txt")
|
.arg("check_fail.txt")
|
||||||
|
@ -802,12 +841,25 @@ fn test_check() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_check_silent() {
|
fn test_check_silent() {
|
||||||
for silent_arg in ["-C", "--check=silent", "--check=quiet"] {
|
for silent_arg in [
|
||||||
|
"-C",
|
||||||
|
"--check=silent",
|
||||||
|
"--check=quiet",
|
||||||
|
"--check=silen", // spell-checker:disable-line
|
||||||
|
"--check=quie", // spell-checker:disable-line
|
||||||
|
"--check=s",
|
||||||
|
"--check=q",
|
||||||
|
] {
|
||||||
new_ucmd!()
|
new_ucmd!()
|
||||||
.arg(silent_arg)
|
.arg(silent_arg)
|
||||||
.arg("check_fail.txt")
|
.arg("check_fail.txt")
|
||||||
.fails()
|
.fails()
|
||||||
.stdout_is("");
|
.stdout_is("");
|
||||||
|
new_ucmd!()
|
||||||
|
.arg(silent_arg)
|
||||||
|
.arg("empty.txt")
|
||||||
|
.succeeds()
|
||||||
|
.no_output();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue