mirror of
https://github.com/uutils/coreutils
synced 2024-12-13 14:52:41 +00:00
pr: use clap to handle help & version
This commit is contained in:
parent
b8e233e305
commit
ebbf8ade1e
2 changed files with 14 additions and 25 deletions
|
@ -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<_>>())
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue