pr: use clap to handle help & version

This commit is contained in:
Daniel Hofstetter 2022-08-03 16:14:05 +02:00
parent b8e233e305
commit ebbf8ade1e
2 changed files with 14 additions and 25 deletions

View file

@ -9,7 +9,7 @@
#[macro_use] #[macro_use]
extern crate quick_error; extern crate quick_error;
use clap::{AppSettings, Arg, ArgMatches, Command}; use clap::{crate_version, Arg, ArgMatches, Command};
use itertools::Itertools; use itertools::Itertools;
use quick_error::ResultExt; use quick_error::ResultExt;
use regex::Regex; use regex::Regex;
@ -22,9 +22,8 @@ use time::macros::format_description;
use time::OffsetDateTime; use time::OffsetDateTime;
use uucore::display::Quotable; use uucore::display::Quotable;
use uucore::error::{set_exit_code, UResult}; use uucore::error::UResult;
const VERSION: &str = env!("CARGO_PKG_VERSION");
const ABOUT: &str = const ABOUT: &str =
"Write content of given file or standard input to standard output with pagination filter"; "Write content of given file or standard input to standard output with pagination filter";
const AFTER_HELP: &str = const AFTER_HELP: &str =
@ -85,7 +84,6 @@ mod options {
pub const INDENT: &str = "indent"; pub const INDENT: &str = "indent";
pub const JOIN_LINES: &str = "join-lines"; pub const JOIN_LINES: &str = "join-lines";
pub const HELP: &str = "help"; pub const HELP: &str = "help";
pub const VERSION: &str = "version";
pub const FILES: &str = "files"; pub const FILES: &str = "files";
} }
@ -196,13 +194,11 @@ quick_error! {
pub fn uu_app<'a>() -> Command<'a> { pub fn uu_app<'a>() -> Command<'a> {
Command::new(uucore::util_name()) Command::new(uucore::util_name())
.version(VERSION) .version(crate_version!())
.about(ABOUT) .about(ABOUT)
.after_help(AFTER_HELP) .after_help(AFTER_HELP)
.infer_long_args(true) .infer_long_args(true)
.args_override_self(true) .args_override_self(true)
.setting(AppSettings::NoAutoHelp)
.setting(AppSettings::NoAutoVersion)
.arg( .arg(
Arg::new(options::PAGES) Arg::new(options::PAGES)
.long(options::PAGES) .long(options::PAGES)
@ -362,13 +358,7 @@ pub fn uu_app<'a>() -> Command<'a> {
.arg( .arg(
Arg::new(options::HELP) Arg::new(options::HELP)
.long(options::HELP) .long(options::HELP)
.help("Show this help message") .help("Print help information")
)
.arg(
Arg::new(options::VERSION)
.short('V')
.long(options::VERSION)
.help("Show version information")
) )
.arg( .arg(
Arg::new(options::FILES) Arg::new(options::FILES)
@ -389,21 +379,10 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
Ok(m) => m, Ok(m) => m,
Err(e) => { Err(e) => {
e.print()?; e.print()?;
set_exit_code(1);
return Ok(()); return Ok(());
} }
}; };
if matches.contains_id(options::VERSION) {
println!("{}", command.render_long_version());
return Ok(());
}
if matches.contains_id(options::HELP) {
command.print_help()?;
return Ok(());
}
let mut files = matches let mut files = matches
.get_many::<String>(options::FILES) .get_many::<String>(options::FILES)
.map(|v| v.map(|s| s.as_str()).collect::<Vec<_>>()) .map(|v| v.map(|s| s.as_str()).collect::<Vec<_>>())

View file

@ -469,3 +469,13 @@ fn test_value_for_number_lines() {
// Therefore, pr tries to access the file, which does not exist. // Therefore, pr tries to access the file, which does not exist.
new_ucmd!().args(&["-n", "foo5.txt", "test.log"]).fails(); new_ucmd!().args(&["-n", "foo5.txt", "test.log"]).fails();
} }
#[test]
fn test_help() {
new_ucmd!().arg("--help").succeeds();
}
#[test]
fn test_version() {
new_ucmd!().arg("--version").succeeds();
}