Update to clap 3

This commit is contained in:
David Peter committed 2022-05-22 22:21:49 +02:00
1 parent 4904a7e26f
commit 49ebf4771f
3 files changed
+95 -70

No files matched your search

Generated
+64 -20
View File
@@ -76,17 +76,28 @@ dependencies = [
[[package]]
name = "clap"
version = "2.34.0"
version = "3.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"
dependencies = [
"ansi_term",
"atty",
"bitflags",
"clap_lex",
"indexmap",
"lazy_static",
"strsim",
"term_size",
"termcolor",
"terminal_size",
"textwrap",
"unicode-width",
]
[[package]]
name = "clap_lex"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213"
dependencies = [
"os_str_bytes",
]
[[package]]
@@ -136,6 +147,12 @@ dependencies = [
"num-traits",
]
[[package]]
name = "hashbrown"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
[[package]]
name = "hermit-abi"
version = "0.1.19"
@@ -160,6 +177,16 @@ dependencies = [
"thiserror",
]
[[package]]
name = "indexmap"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee"
dependencies = [
"autocfg",
"hashbrown",
]
[[package]]
name = "itertools"
version = "0.10.3"
@@ -202,6 +229,12 @@ dependencies = [
"autocfg",
]
[[package]]
name = "os_str_bytes"
version = "6.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "029d8d0b2f198229de29dca79676f2738ff952edf3fde542eb8bf94d8c21b435"
[[package]]
name = "predicates"
version = "2.1.1"
@@ -275,9 +308,9 @@ checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
[[package]]
name = "strsim"
version = "0.8.0"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]]
name = "syn"
@@ -291,10 +324,19 @@ dependencies = [
]
[[package]]
name = "term_size"
version = "0.3.2"
name = "termcolor"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e4129646ca0ed8f45d09b929036bafad5377103edd06e50bf574b353d2b08d9"
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
dependencies = [
"winapi-util",
]
[[package]]
name = "terminal_size"
version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
dependencies = [
"libc",
"winapi",
@@ -308,12 +350,11 @@ checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b"
[[package]]
name = "textwrap"
version = "0.11.0"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
dependencies = [
"term_size",
"unicode-width",
"terminal_size",
]
[[package]]
@@ -342,12 +383,6 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
[[package]]
name = "unicode-width"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
[[package]]
name = "unicode-xid"
version = "0.2.3"
@@ -379,6 +414,15 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
dependencies = [
"winapi",
]
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
+2 -2
View File
@@ -19,9 +19,9 @@ libc = "0.2"
thiserror = "1.0"
[dependencies.clap]
version = "2"
version = "3"
default-features = false
features = ["suggestions", "color", "wrap_help"]
features = ["std", "suggestions", "color", "wrap_help", "cargo"]
[dev-dependencies]
assert_cmd = "2.0"
+29 -48
View File
@@ -6,7 +6,7 @@ use std::fs::File;
use std::io::{self, prelude::*, SeekFrom};
use std::num::NonZeroI64;
use clap::{App, AppSettings, Arg};
use clap::{crate_name, crate_version, AppSettings, Arg, ColorChoice, Command};
use atty::Stream;
@@ -21,21 +21,19 @@ use hexyl::{BorderStyle, Input, Printer};
const DEFAULT_BLOCK_SIZE: i64 = 512;
fn run() -> Result<(), AnyhowError> {
let app = App::new(crate_name!())
.setting(AppSettings::ColorAuto)
.setting(AppSettings::ColoredHelp)
let command = Command::new(crate_name!())
.setting(AppSettings::DeriveDisplayOrder)
.setting(AppSettings::UnifiedHelpMessage)
.color(ColorChoice::Auto)
.max_term_width(90)
.version(crate_version!())
.about(crate_description!())
.arg(
Arg::with_name("FILE")
Arg::new("FILE")
.help("The file to display. If no FILE argument is given, read from STDIN."),
)
.arg(
Arg::with_name("length")
.short("n")
Arg::new("length")
.short('n')
.long("length")
.takes_value(true)
.value_name("N")
@@ -48,8 +46,8 @@ fn run() -> Result<(), AnyhowError> {
),
)
.arg(
Arg::with_name("bytes")
.short("c")
Arg::new("bytes")
.short('c')
.long("bytes")
.takes_value(true)
.value_name("N")
@@ -57,17 +55,17 @@ fn run() -> Result<(), AnyhowError> {
.help("An alias for -n/--length"),
)
.arg(
Arg::with_name("count")
.short("l")
Arg::new("count")
.short('l')
.takes_value(true)
.value_name("N")
.conflicts_with_all(&["length", "bytes"])
.hidden(true)
.hide(true)
.help("Yet another alias for -n/--length"),
)
.arg(
Arg::with_name("skip")
.short("s")
Arg::new("skip")
.short('s')
.long("skip")
.takes_value(true)
.value_name("N")
@@ -78,7 +76,7 @@ fn run() -> Result<(), AnyhowError> {
),
)
.arg(
Arg::with_name("block_size")
Arg::new("block_size")
.long("block-size")
.takes_value(true)
.value_name("SIZE")
@@ -89,8 +87,8 @@ fn run() -> Result<(), AnyhowError> {
)),
)
.arg(
Arg::with_name("nosqueezing")
.short("v")
Arg::new("nosqueezing")
.short('v')
.long("no-squeezing")
.help(
"Displays all input data. Otherwise any number of groups of output \
@@ -99,28 +97,28 @@ fn run() -> Result<(), AnyhowError> {
),
)
.arg(
Arg::with_name("color")
Arg::new("color")
.long("color")
.takes_value(true)
.value_name("WHEN")
.possible_values(&["always", "auto", "never"])
.default_value_if("plain", None, "never")
.default_value_if("plain", None, Some("never"))
.default_value("always")
.help(
"When to use colors. The auto-mode only displays colors if the output \
goes to an interactive terminal",
),
)
.arg(Arg::with_name("plain").short("p").long("plain").help(
.arg(Arg::new("plain").short('p').long("plain").help(
"Display output with --no-characters, --no-position, --border=none, and --color=never.",
))
.arg(
Arg::with_name("border")
Arg::new("border")
.long("border")
.takes_value(true)
.value_name("STYLE")
.possible_values(&["unicode", "ascii", "none"])
.default_value_if("plain", None, "none")
.default_value_if("plain", None, Some("none"))
.default_value("unicode")
.help(
"Whether to draw a border with Unicode characters, ASCII characters, \
@@ -128,20 +126,20 @@ fn run() -> Result<(), AnyhowError> {
),
)
.arg(
Arg::with_name("no_chars")
.short("C")
Arg::new("no_chars")
.short('C')
.long("no-characters")
.help("Whether to display the character panel on the right."),
)
.arg(
Arg::with_name("no_position")
.short("P")
Arg::new("no_position")
.short('P')
.long("no-position")
.help("Whether to display the position panel on the left."),
)
.arg(
Arg::with_name("display_offset")
.short("o")
Arg::new("display_offset")
.short('o')
.long("display-offset")
.takes_value(true)
.value_name("N")
@@ -153,7 +151,7 @@ fn run() -> Result<(), AnyhowError> {
),
);
let matches = app.get_matches_safe()?;
let matches = command.get_matches();
let stdin = io::stdin();
@@ -294,24 +292,7 @@ fn main() {
let result = run();
if let Err(err) = result {
if let Some(clap_err) = err.downcast_ref::<clap::Error>() {
match clap_err.kind {
// The exit code should not indicate an error for --help / --version
clap::ErrorKind::HelpDisplayed => {
eprint!("{}", clap_err); // Clap errors already have newlines
std::process::exit(0)
}
clap::ErrorKind::VersionDisplayed => {
// Version output in clap 2.33.1 (dep as of now) doesn't have a newline
// and the fix is not included even in the latest stable release
println!();
std::process::exit(0)
}
_ => (),
}
} else {
eprintln!("Error: {:?}", err);
}
eprintln!("Error: {:?}", err);
std::process::exit(1);
}
}