1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 11:37:44 +00:00

stdbuf: clap 3

This commit is contained in:
Terts Diepraam 2022-01-11 14:54:16 +01:00
parent eaaa16291e
commit 0fca4460de
3 changed files with 18 additions and 18 deletions

View file

@ -15,7 +15,7 @@ edition = "2018"
path = "src/stdbuf.rs"
[dependencies]
clap = { version = "2.33", features = ["wrap_help"] }
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
tempfile = "3.1"
uucore = { version=">=0.0.10", package="uucore", path="../../uucore" }
uucore_procs = { version=">=0.0.7", package="uucore_procs", path="../../uucore_procs" }

View file

@ -40,11 +40,11 @@ static LONG_HELP: &str = "If MODE is 'L' the corresponding stream will be line b
mod options {
pub const INPUT: &str = "input";
pub const INPUT_SHORT: &str = "i";
pub const INPUT_SHORT: char = 'i';
pub const OUTPUT: &str = "output";
pub const OUTPUT_SHORT: &str = "o";
pub const OUTPUT_SHORT: char = 'o';
pub const ERROR: &str = "error";
pub const ERROR_SHORT: &str = "e";
pub const ERROR_SHORT: char = 'e';
pub const COMMAND: &str = "command";
}
@ -66,7 +66,7 @@ struct ProgramOptions {
stderr: BufferType,
}
impl<'a> TryFrom<&ArgMatches<'a>> for ProgramOptions {
impl<'a> TryFrom<&ArgMatches> for ProgramOptions {
type Error = ProgramOptionsError;
fn try_from(matches: &ArgMatches) -> Result<Self, Self::Error> {
@ -156,7 +156,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
.accept_any();
let usage = usage();
let matches = uu_app().usage(&usage[..]).get_matches_from(args);
let matches = uu_app().override_usage(&usage[..]).get_matches_from(args);
let options = ProgramOptions::try_from(&matches).map_err(|e| UUsageError::new(125, e.0))?;
@ -191,41 +191,41 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
}
}
pub fn uu_app() -> App<'static, 'static> {
pub fn uu_app<'a>() -> App<'a> {
App::new(uucore::util_name())
.version(crate_version!())
.about(ABOUT)
.after_help(LONG_HELP)
.setting(AppSettings::TrailingVarArg)
.arg(
Arg::with_name(options::INPUT)
Arg::new(options::INPUT)
.long(options::INPUT)
.short(options::INPUT_SHORT)
.help("adjust standard input stream buffering")
.value_name("MODE")
.required_unless_one(&[options::OUTPUT, options::ERROR]),
.required_unless_present_any(&[options::OUTPUT, options::ERROR]),
)
.arg(
Arg::with_name(options::OUTPUT)
Arg::new(options::OUTPUT)
.long(options::OUTPUT)
.short(options::OUTPUT_SHORT)
.help("adjust standard output stream buffering")
.value_name("MODE")
.required_unless_one(&[options::INPUT, options::ERROR]),
.required_unless_present_any(&[options::INPUT, options::ERROR]),
)
.arg(
Arg::with_name(options::ERROR)
Arg::new(options::ERROR)
.long(options::ERROR)
.short(options::ERROR_SHORT)
.help("adjust standard error stream buffering")
.value_name("MODE")
.required_unless_one(&[options::INPUT, options::OUTPUT]),
.required_unless_present_any(&[options::INPUT, options::OUTPUT]),
)
.arg(
Arg::with_name(options::COMMAND)
.multiple(true)
Arg::new(options::COMMAND)
.multiple_occurrences(true)
.takes_value(true)
.hidden(true)
.hide(true)
.required(true),
)
}

View file

@ -29,9 +29,9 @@ fn test_stdbuf_no_buffer_option_fails() {
ts.ucmd().args(&["head"]).fails().stderr_is(&format!(
"error: The following required arguments were not provided:\n \
--error <MODE>\n \
--input <MODE>\n \
--output <MODE>\n\n\
--output <MODE>\n \
--error <MODE>\n\n\
USAGE:\n \
{1} {0} OPTION... COMMAND\n\n\
For more information try --help",