Upgrade to clap 3 with minimal changes

This removes the last cargo audit override (for the unmaintained
ansi_term).

Don't mark options as required when they have default values:
see <https://github.com/clap-rs/clap/pull/3793>.
This commit is contained in:
Gabriel de Perthuis 2022-11-04 10:52:02 +01:00
parent 7d079ade3b
commit bc08ea48f7
8 changed files with 61 additions and 73 deletions

75
Cargo.lock generated
View File

@ -49,15 +49,6 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "ansi_term"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
dependencies = [
"winapi",
]
[[package]] [[package]]
name = "anyhow" name = "anyhow"
version = "1.0.66" version = "1.0.66"
@ -646,17 +637,26 @@ dependencies = [
[[package]] [[package]]
name = "clap" name = "clap"
version = "2.34.0" version = "3.2.23"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
dependencies = [ dependencies = [
"ansi_term",
"atty", "atty",
"bitflags", "bitflags",
"strsim 0.8.0", "clap_lex",
"indexmap",
"strsim",
"termcolor",
"textwrap", "textwrap",
"unicode-width", ]
"vec_map",
[[package]]
name = "clap_lex"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
dependencies = [
"os_str_bytes",
] ]
[[package]] [[package]]
@ -861,7 +861,7 @@ dependencies = [
"ident_case", "ident_case",
"proc-macro2", "proc-macro2",
"quote", "quote",
"strsim 0.10.0", "strsim",
"syn", "syn",
] ]
@ -875,7 +875,7 @@ dependencies = [
"ident_case", "ident_case",
"proc-macro2", "proc-macro2",
"quote", "quote",
"strsim 0.10.0", "strsim",
"syn", "syn",
] ]
@ -1628,6 +1628,16 @@ dependencies = [
"unicode-normalization", "unicode-normalization",
] ]
[[package]]
name = "indexmap"
version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
dependencies = [
"autocfg",
"hashbrown",
]
[[package]] [[package]]
name = "inotify" name = "inotify"
version = "0.9.6" version = "0.9.6"
@ -2171,6 +2181,12 @@ dependencies = [
"vcpkg", "vcpkg",
] ]
[[package]]
name = "os_str_bytes"
version = "6.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3baf96e39c5359d2eb0dd6ccb42c62b91d9678aa68160d261b9e0ccbf9e9dea9"
[[package]] [[package]]
name = "overload" name = "overload"
version = "0.1.1" version = "0.1.1"
@ -3129,12 +3145,6 @@ dependencies = [
"rand 0.8.5", "rand 0.8.5",
] ]
[[package]]
name = "strsim"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]] [[package]]
name = "strsim" name = "strsim"
version = "0.10.0" version = "0.10.0"
@ -3228,12 +3238,9 @@ dependencies = [
[[package]] [[package]]
name = "textwrap" name = "textwrap"
version = "0.11.0" version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
dependencies = [
"unicode-width",
]
[[package]] [[package]]
name = "thiserror" name = "thiserror"
@ -4224,12 +4231,6 @@ dependencies = [
"tinyvec", "tinyvec",
] ]
[[package]]
name = "unicode-width"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
[[package]] [[package]]
name = "unicode-xid" name = "unicode-xid"
version = "0.2.4" version = "0.2.4"
@ -4291,12 +4292,6 @@ version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "vec_map"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]] [[package]]
name = "version_check" name = "version_check"
version = "0.9.4" version = "0.9.4"

View File

@ -15,7 +15,7 @@ repository = "https://gitlab.torproject.org/tpo/core/arti.git/"
anyhow = "1.0.23" anyhow = "1.0.23"
arti = { path = "../arti", version = "1.0.1" } arti = { path = "../arti", version = "1.0.1" }
arti-client = { package = "arti-client", path = "../arti-client", version = "0.7.0" } arti-client = { package = "arti-client", path = "../arti-client", version = "0.7.0" }
clap = "2.33.0" clap = "3"
float-ord = "0.3" float-ord = "0.3"
fs-mistrust = { path = "../fs-mistrust", version = "0.5.0" } fs-mistrust = { path = "../fs-mistrust", version = "0.5.0" }
futures = "0.3.14" futures = "0.3.14"

View File

@ -287,7 +287,7 @@ fn main() -> Result<()> {
.about("A simple benchmarking utility for Arti.") .about("A simple benchmarking utility for Arti.")
.arg( .arg(
Arg::with_name("arti-config") Arg::with_name("arti-config")
.short("c") .short('c')
.long("arti-config") .long("arti-config")
.takes_value(true) .takes_value(true)
.required(true) .required(true)
@ -298,58 +298,53 @@ fn main() -> Result<()> {
) )
.arg( .arg(
Arg::with_name("num-samples") Arg::with_name("num-samples")
.short("s") .short('s')
.long("num-samples") .long("num-samples")
.takes_value(true) .takes_value(true)
.required(true)
.value_name("COUNT") .value_name("COUNT")
.default_value("3") .default_value("3")
.help("How many samples to take per benchmark run.") .help("How many samples to take per benchmark run.")
) )
.arg( .arg(
Arg::with_name("num-streams") Arg::with_name("num-streams")
.short("p") .short('p')
.long("streams") .long("streams")
.aliases(&["num-parallel"]) .aliases(&["num-parallel"])
.takes_value(true) .takes_value(true)
.required(true)
.value_name("COUNT") .value_name("COUNT")
.default_value("3") .default_value("3")
.help("How many simultaneous streams per circuit.") .help("How many simultaneous streams per circuit.")
) )
.arg( .arg(
Arg::with_name("num-circuits") Arg::with_name("num-circuits")
.short("C") .short('C')
.long("num-circuits") .long("num-circuits")
.takes_value(true) .takes_value(true)
.required(false)
.value_name("COUNT") .value_name("COUNT")
.default_value("1") .default_value("1")
.help("How many simultaneous circuits per run.") .help("How many simultaneous circuits per run.")
) )
.arg( .arg(
Arg::with_name("output") Arg::with_name("output")
.short("o") .short('o')
.takes_value(true) .takes_value(true)
.value_name("/path/to/output.json") .value_name("/path/to/output.json")
.help("A path to write benchmark results to, in JSON format.") .help("A path to write benchmark results to, in JSON format.")
) )
.arg( .arg(
Arg::with_name("download-bytes") Arg::with_name("download-bytes")
.short("d") .short('d')
.long("download-bytes") .long("download-bytes")
.takes_value(true) .takes_value(true)
.required(true)
.value_name("SIZE") .value_name("SIZE")
.default_value("10485760") .default_value("10485760")
.help("How much fake payload data to generate for the download benchmark."), .help("How much fake payload data to generate for the download benchmark."),
) )
.arg( .arg(
Arg::with_name("upload-bytes") Arg::with_name("upload-bytes")
.short("u") .short('u')
.long("upload-bytes") .long("upload-bytes")
.takes_value(true) .takes_value(true)
.required(true)
.value_name("SIZE") .value_name("SIZE")
.default_value("10485760") .default_value("10485760")
.help("How much fake payload data to generate for the upload benchmark."), .help("How much fake payload data to generate for the upload benchmark."),

View File

@ -22,7 +22,7 @@ arti-client = { package = "arti-client", path = "../arti-client", version = "0.7
] } ] }
async-trait = "0.1.2" async-trait = "0.1.2"
cfg-if = "1.0.0" cfg-if = "1.0.0"
clap = "2.33.0" clap = "3"
config = { version = "0.13", default-features = false } config = { version = "0.13", default-features = false }
futures = "0.3.14" futures = "0.3.14"
pin-project = "1" pin-project = "1"

View File

@ -28,7 +28,7 @@ pub(crate) fn parse_cmdline() -> Result<Job> {
.usage("arti-testing <SUBCOMMAND> [OPTIONS]") .usage("arti-testing <SUBCOMMAND> [OPTIONS]")
.arg( .arg(
Arg::with_name("config-files") Arg::with_name("config-files")
.short("c") .short('c')
.long("config") .long("config")
.takes_value(true) .takes_value(true)
.value_name("FILE") .value_name("FILE")
@ -37,7 +37,7 @@ pub(crate) fn parse_cmdline() -> Result<Job> {
) )
.arg( .arg(
Arg::with_name("option") Arg::with_name("option")
.short("o") .short('o')
.takes_value(true) .takes_value(true)
.value_name("KEY=VALUE") .value_name("KEY=VALUE")
.multiple(true) .multiple(true)
@ -45,7 +45,7 @@ pub(crate) fn parse_cmdline() -> Result<Job> {
) )
.arg( .arg(
Arg::with_name("log") Arg::with_name("log")
.short("l") .short('l')
.long("log") .long("log")
.takes_value(true) .takes_value(true)
.value_name("FILTER") .value_name("FILTER")
@ -107,15 +107,13 @@ pub(crate) fn parse_cmdline() -> Result<Job> {
Arg::with_name("target") Arg::with_name("target")
.long("target") .long("target")
.takes_value(true) .takes_value(true)
.value_name("ADDR:PORT") .value_name("ADDR:PORT"),
.required(true),
) )
.arg( .arg(
Arg::with_name("retry") Arg::with_name("retry")
.long("retry") .long("retry")
.takes_value(true) .takes_value(true)
.value_name("DELAY") .value_name("DELAY"),
.required(false),
), ),
) )
.subcommand(SubCommand::with_name("bootstrap").about("Try to bootstrap only")) .subcommand(SubCommand::with_name("bootstrap").about("Try to bootstrap only"))

View File

@ -49,7 +49,7 @@ anyhow = "1.0.23"
arti-client = { package = "arti-client", path = "../arti-client", version = "0.7.0", default-features = false } arti-client = { package = "arti-client", path = "../arti-client", version = "0.7.0", default-features = false }
async-ctrlc = { version = "1.2.0", optional = true } async-ctrlc = { version = "1.2.0", optional = true }
cfg-if = "1.0.0" cfg-if = "1.0.0"
clap = "2.33.0" clap = "3"
config = { version = "0.13", default-features = false, features = ["toml"] } config = { version = "0.13", default-features = false, features = ["toml"] }
derive_builder = { version = "0.11", package = "derive_builder_fork_arti" } derive_builder = { version = "0.11", package = "derive_builder_fork_arti" }
educe = "0.4.6" educe = "0.4.6"

View File

@ -249,18 +249,18 @@ where
.usage("arti <SUBCOMMAND> [OPTIONS]") .usage("arti <SUBCOMMAND> [OPTIONS]")
.arg( .arg(
Arg::with_name("config-files") Arg::with_name("config-files")
.short("c") .short('c')
.long("config") .long("config")
.takes_value(true) .takes_value(true)
.value_name("FILE") .value_name("FILE")
.multiple(true) .multiple(true)
// NOTE: don't forget the `global` flag on all arguments declared at this level! // NOTE: don't forget the `global` flag on all arguments declared at this level!
.global(true) .global(true)
.help(&config_file_help), .help(config_file_help.as_str()),
) )
.arg( .arg(
Arg::with_name("option") Arg::with_name("option")
.short("o") .short('o')
.takes_value(true) .takes_value(true)
.value_name("KEY=VALUE") .value_name("KEY=VALUE")
.multiple(true) .multiple(true)
@ -269,7 +269,7 @@ where
) )
.arg( .arg(
Arg::with_name("loglevel") Arg::with_name("loglevel")
.short("l") .short('l')
.long("log-level") .long("log-level")
.global(true) .global(true)
.takes_value(true) .takes_value(true)
@ -290,14 +290,14 @@ where
) )
.arg( .arg(
Arg::with_name("socks-port") Arg::with_name("socks-port")
.short("p") .short('p')
.takes_value(true) .takes_value(true)
.value_name("PORT") .value_name("PORT")
.help("Port to listen on for SOCKS connections (overrides the port in the config if specified).") .help("Port to listen on for SOCKS connections (overrides the port in the config if specified).")
) )
.arg( .arg(
Arg::with_name("dns-port") Arg::with_name("dns-port")
.short("d") .short('d')
.takes_value(true) .takes_value(true)
.value_name("PORT") .value_name("PORT")
.help("Port to listen on for DNS request (overrides the port in the config if specified).") .help("Port to listen on for DNS request (overrides the port in the config if specified).")

View File

@ -13,17 +13,17 @@ set -euo pipefail
# If you add anything to this section, make sure to add a comment # If you add anything to this section, make sure to add a comment
# explaining why it's safe to do so. # explaining why it's safe to do so.
IGNORE=( IGNORE=(
# This is not a vulnerability but an unmaintained warning for `ansi_term`.
# The upstream issue does not offer good alternatives, and anyway we get
# this crate via clap and tracing-*.
# It does not seem at all likely that this is really a problem for us.
--ignore RUSTSEC-2021-0139
) )
${CARGO:-cargo} audit -D warnings "${IGNORE[@]}" ${CARGO:-cargo} audit -D warnings "${IGNORE[@]}"
OBSOLETE_IGNORE=( OBSOLETE_IGNORE=(
# This is not a vulnerability but an unmaintained warning for `ansi_term`.
# The upstream issue does not offer good alternatives, and anyway we get
# this crate via clap and tracing-*.
# It does not seem at all likely that this is really a problem for us.
--ignore RUSTSEC-2021-0139
# This is not a vulnerability but an unmaintained warn for the # This is not a vulnerability but an unmaintained warn for the
# `net2` crate. It was pulled indirectly by `notify` 4.0. # `net2` crate. It was pulled indirectly by `notify` 4.0.
# It's fixed in `notify` 5.0. # It's fixed in `notify` 5.0.