mirror of
https://github.com/sharkdp/hyperfine.git
synced 2026-11-02 17:11:28 +00:00
update to clap 4
This commit is contained in:
1 parent
27ec9e22d8
commit
8d38ef3eaa
4 files changed
+63
-94
No files matched your search
Generated
+36
-63
@@ -13,9 +13,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anyhow"
|
name = "anyhow"
|
||||||
version = "1.0.65"
|
version = "1.0.66"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602"
|
checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "approx"
|
name = "approx"
|
||||||
@@ -34,9 +34,9 @@ checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "assert_cmd"
|
name = "assert_cmd"
|
||||||
version = "2.0.4"
|
version = "2.0.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "93ae1ddd39efd67689deb1979d80bad3bf7f2b09c6e6117c8d1f2443b5e2f83e"
|
checksum = "d5c2ca00549910ec251e3bd15f87aeeb206c9456b9a77b43ff6c97c54042a472"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bstr",
|
"bstr",
|
||||||
"doc-comment",
|
"doc-comment",
|
||||||
@@ -104,35 +104,33 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "3.2.22"
|
version = "4.0.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750"
|
checksum = "335867764ed2de42325fafe6d18b8af74ba97ee0c590fa016f157535b42ab04b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"atty",
|
"atty",
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"clap_lex",
|
"clap_lex",
|
||||||
"indexmap",
|
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"strsim",
|
"strsim",
|
||||||
"termcolor",
|
"termcolor",
|
||||||
"terminal_size 0.2.1",
|
"terminal_size 0.2.1",
|
||||||
"textwrap",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_complete"
|
name = "clap_complete"
|
||||||
version = "3.2.5"
|
version = "4.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3f7a2e0a962c45ce25afce14220bc24f9dade0a1787f185cecf96bfba7847cd8"
|
checksum = "dfe581a2035db4174cdbdc91265e1aba50f381577f0510d0ad36c7bc59cc84a3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_lex"
|
name = "clap_lex"
|
||||||
version = "0.2.4"
|
version = "0.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
|
checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"os_str_bytes",
|
"os_str_bytes",
|
||||||
]
|
]
|
||||||
@@ -159,13 +157,13 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "console"
|
name = "console"
|
||||||
version = "0.15.1"
|
version = "0.15.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "89eab4d20ce20cea182308bca13088fecea9c05f6776cf287205d41a0ed3c847"
|
checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"encode_unicode",
|
"encode_unicode",
|
||||||
|
"lazy_static",
|
||||||
"libc",
|
"libc",
|
||||||
"once_cell",
|
|
||||||
"terminal_size 0.1.17",
|
"terminal_size 0.1.17",
|
||||||
"unicode-width",
|
"unicode-width",
|
||||||
"winapi",
|
"winapi",
|
||||||
@@ -264,21 +262,15 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getrandom"
|
name = "getrandom"
|
||||||
version = "0.2.7"
|
version = "0.2.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
|
checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"libc",
|
"libc",
|
||||||
"wasi",
|
"wasi",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hashbrown"
|
|
||||||
version = "0.12.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hermit-abi"
|
name = "hermit-abi"
|
||||||
version = "0.1.19"
|
version = "0.1.19"
|
||||||
@@ -316,16 +308,6 @@ dependencies = [
|
|||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "indexmap"
|
|
||||||
version = "1.9.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg 1.1.0",
|
|
||||||
"hashbrown",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "indicatif"
|
name = "indicatif"
|
||||||
version = "0.17.1"
|
version = "0.17.1"
|
||||||
@@ -348,9 +330,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "io-lifetimes"
|
name = "io-lifetimes"
|
||||||
version = "0.7.3"
|
version = "0.7.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1ea37f355c05dde75b84bba2d767906ad522e97cd9e2eef2be7a4ab7fb442c06"
|
checksum = "e6e481ccbe3dea62107216d0d1138bb8ad8e5e5c43009a098bd1990272c497b0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itertools"
|
name = "itertools"
|
||||||
@@ -369,9 +351,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.3"
|
version = "1.0.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
|
checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lazy_static"
|
name = "lazy_static"
|
||||||
@@ -517,9 +499,9 @@ checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "os_str_bytes"
|
name = "os_str_bytes"
|
||||||
version = "6.3.0"
|
version = "6.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
|
checksum = "3baf96e39c5359d2eb0dd6ccb42c62b91d9678aa68160d261b9e0ccbf9e9dea9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-utils"
|
name = "pin-utils"
|
||||||
@@ -565,9 +547,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.43"
|
version = "1.0.47"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab"
|
checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
@@ -780,9 +762,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustix"
|
name = "rustix"
|
||||||
version = "0.35.10"
|
version = "0.35.12"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "af895b90e5c071badc3136fc10ff0bcfc98747eadbaf43ed8f214e07ba8f8477"
|
checksum = "985947f9b6423159c4726323f373be0a21bdb514c5af06a849cb3d2dce2d01e8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"errno",
|
"errno",
|
||||||
@@ -800,18 +782,18 @@ checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.144"
|
version = "1.0.147"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860"
|
checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.144"
|
version = "1.0.147"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00"
|
checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -820,11 +802,11 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.85"
|
version = "1.0.87"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
|
checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa 1.0.3",
|
"itoa 1.0.4",
|
||||||
"ryu",
|
"ryu",
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
@@ -853,9 +835,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.100"
|
version = "1.0.103"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e"
|
checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -911,15 +893,6 @@ version = "0.2.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b"
|
checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "textwrap"
|
|
||||||
version = "0.15.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16"
|
|
||||||
dependencies = [
|
|
||||||
"terminal_size 0.2.1",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror"
|
name = "thiserror"
|
||||||
version = "1.0.37"
|
version = "1.0.37"
|
||||||
@@ -942,9 +915,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.4"
|
version = "1.0.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
|
checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-width"
|
name = "unicode-width"
|
||||||
|
|||||||
+4
-4
@@ -42,9 +42,9 @@ once_cell = "1.14"
|
|||||||
nix = { version = "0.25.0", features = ["zerocopy"] }
|
nix = { version = "0.25.0", features = ["zerocopy"] }
|
||||||
|
|
||||||
[dependencies.clap]
|
[dependencies.clap]
|
||||||
version = "3"
|
version = "4.0.18"
|
||||||
default-features = false
|
default-features = false
|
||||||
features = ["suggestions", "color", "wrap_help", "cargo"]
|
features = ["suggestions", "color", "wrap_help", "cargo", "help", "usage", "error-context"]
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
approx = "0.5"
|
approx = "0.5"
|
||||||
@@ -53,9 +53,9 @@ predicates = "2.1"
|
|||||||
tempfile = "3.3"
|
tempfile = "3.3"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
clap = "3"
|
clap = "4.0.18"
|
||||||
atty = "0.2"
|
atty = "0.2"
|
||||||
clap_complete = "3"
|
clap_complete = "4.0.3"
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
lto = true
|
lto = true
|
||||||
+5
-7
@@ -1,6 +1,6 @@
|
|||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
|
|
||||||
use clap::{crate_version, AppSettings, Arg, ArgMatches, Command, builder::NonEmptyStringValueParser, ArgAction};
|
use clap::{crate_version, Arg, ArgMatches, Command, builder::NonEmptyStringValueParser, ArgAction};
|
||||||
|
|
||||||
pub fn get_cli_arguments<'a, I, T>(args: I) -> ArgMatches
|
pub fn get_cli_arguments<'a, I, T>(args: I) -> ArgMatches
|
||||||
where
|
where
|
||||||
@@ -12,10 +12,9 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Build the clap command for parsing command line arguments
|
/// Build the clap command for parsing command line arguments
|
||||||
fn build_command() -> Command<'static> {
|
fn build_command() -> Command {
|
||||||
Command::new("hyperfine")
|
Command::new("hyperfine")
|
||||||
.version(crate_version!())
|
.version(crate_version!())
|
||||||
.setting(AppSettings::DeriveDisplayOrder)
|
|
||||||
.next_line_help(true)
|
.next_line_help(true)
|
||||||
.hide_possible_values(true)
|
.hide_possible_values(true)
|
||||||
.max_term_width(90)
|
.max_term_width(90)
|
||||||
@@ -28,8 +27,7 @@ fn build_command() -> Command<'static> {
|
|||||||
'--shell=none'. If multiple commands are given, hyperfine will show a \
|
'--shell=none'. If multiple commands are given, hyperfine will show a \
|
||||||
comparison of the respective runtimes.")
|
comparison of the respective runtimes.")
|
||||||
.required(true)
|
.required(true)
|
||||||
.action(ArgAction::StoreValue)
|
.action(ArgAction::Append)
|
||||||
.multiple_occurrences(true)
|
|
||||||
.value_parser(NonEmptyStringValueParser::new()),
|
.value_parser(NonEmptyStringValueParser::new()),
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
@@ -87,7 +85,7 @@ fn build_command() -> Command<'static> {
|
|||||||
.long("prepare")
|
.long("prepare")
|
||||||
.short('p')
|
.short('p')
|
||||||
.action(ArgAction::Append)
|
.action(ArgAction::Append)
|
||||||
.number_of_values(1)
|
.num_args(1)
|
||||||
.value_name("CMD")
|
.value_name("CMD")
|
||||||
.help(
|
.help(
|
||||||
"Execute CMD before each timing run. This is useful for \
|
"Execute CMD before each timing run. This is useful for \
|
||||||
@@ -289,7 +287,7 @@ fn build_command() -> Command<'static> {
|
|||||||
.long("command-name")
|
.long("command-name")
|
||||||
.short('n')
|
.short('n')
|
||||||
.action(ArgAction::Append)
|
.action(ArgAction::Append)
|
||||||
.number_of_values(1)
|
.num_args(1)
|
||||||
.value_name("NAME")
|
.value_name("NAME")
|
||||||
.help("Give a meaningful name to a command. This can be specified multiple times \
|
.help("Give a meaningful name to a command. This can be specified multiple times \
|
||||||
if several commands are benchmarked."),
|
if several commands are benchmarked."),
|
||||||
|
|||||||
+18
-20
@@ -10,13 +10,12 @@ use crate::{
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
use clap::ArgMatches;
|
use clap::{ArgMatches, parser::ValuesRef};
|
||||||
|
|
||||||
use crate::parameter::tokenize::tokenize;
|
use crate::parameter::tokenize::tokenize;
|
||||||
use crate::parameter::ParameterValue;
|
use crate::parameter::ParameterValue;
|
||||||
|
|
||||||
use anyhow::{bail, Context, Result};
|
use anyhow::{bail, Context, Result};
|
||||||
use clap::Values;
|
|
||||||
use rust_decimal::Decimal;
|
use rust_decimal::Decimal;
|
||||||
|
|
||||||
/// A command that should be benchmarked.
|
/// A command that should be benchmarked.
|
||||||
@@ -118,10 +117,10 @@ pub struct Commands<'a>(Vec<Command<'a>>);
|
|||||||
|
|
||||||
impl<'a> Commands<'a> {
|
impl<'a> Commands<'a> {
|
||||||
pub fn from_cli_arguments(matches: &'a ArgMatches) -> Result<Commands> {
|
pub fn from_cli_arguments(matches: &'a ArgMatches) -> Result<Commands> {
|
||||||
let command_names = matches.values_of("command-name");
|
let command_names = matches.get_many::<String>("command-name");
|
||||||
let command_strings = matches.values_of("command").unwrap();
|
let command_strings = matches.get_many::<String>("command").unwrap_or_default().map(|v| v.as_str()).collect::<Vec<_>>();
|
||||||
|
|
||||||
if let Some(args) = matches.values_of("parameter-scan") {
|
if let Some(args) = matches.get_many::<String>("parameter-scan") {
|
||||||
let step_size = matches.get_one::<String>("parameter-step-size").map(|s| s.as_str());
|
let step_size = matches.get_one::<String>("parameter-step-size").map(|s| s.as_str());
|
||||||
Ok(Self(Self::get_parameter_scan_commands(
|
Ok(Self(Self::get_parameter_scan_commands(
|
||||||
command_names,
|
command_names,
|
||||||
@@ -129,10 +128,9 @@ impl<'a> Commands<'a> {
|
|||||||
args,
|
args,
|
||||||
step_size,
|
step_size,
|
||||||
)?))
|
)?))
|
||||||
} else if let Some(args) = matches.values_of("parameter-list") {
|
} else if let Some(args) = matches.get_many::<String>("parameter-list") {
|
||||||
let command_names = command_names.map_or(vec![], |names| names.collect::<Vec<&str>>());
|
let command_names = command_names.map_or(vec![], |names| names.map(|v| v.as_str()).collect::<Vec<_>>());
|
||||||
|
let args: Vec<_> = args.map(|v| v.as_str()).collect::<Vec<_>>();
|
||||||
let args: Vec<_> = args.collect();
|
|
||||||
let param_names_and_values: Vec<(&str, Vec<String>)> = args
|
let param_names_and_values: Vec<(&str, Vec<String>)> = args
|
||||||
.chunks_exact(2)
|
.chunks_exact(2)
|
||||||
.map(|pair| {
|
.map(|pair| {
|
||||||
@@ -148,7 +146,7 @@ impl<'a> Commands<'a> {
|
|||||||
bail!("Duplicate parameter names: {}", &duplicates.join(", "));
|
bail!("Duplicate parameter names: {}", &duplicates.join(", "));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let command_list = command_strings.collect::<Vec<&str>>();
|
let command_list = command_strings;
|
||||||
|
|
||||||
let dimensions: Vec<usize> = std::iter::once(command_list.len())
|
let dimensions: Vec<usize> = std::iter::once(command_list.len())
|
||||||
.chain(
|
.chain(
|
||||||
@@ -209,12 +207,12 @@ impl<'a> Commands<'a> {
|
|||||||
|
|
||||||
Ok(Self(commands))
|
Ok(Self(commands))
|
||||||
} else {
|
} else {
|
||||||
let command_names = command_names.map_or(vec![], |names| names.collect::<Vec<&str>>());
|
let command_names = command_names.map_or(vec![], |names| names.map(|v| v.as_str()).collect::<Vec<_>>());
|
||||||
if command_names.len() > command_strings.len() {
|
if command_names.len() > command_strings.len() {
|
||||||
return Err(OptionsError::TooManyCommandNames(command_strings.len()).into());
|
return Err(OptionsError::TooManyCommandNames(command_strings.len()).into());
|
||||||
}
|
}
|
||||||
|
|
||||||
let command_list = command_strings.collect::<Vec<&str>>();
|
let command_list = command_strings;
|
||||||
let mut commands = Vec::with_capacity(command_list.len());
|
let mut commands = Vec::with_capacity(command_list.len());
|
||||||
for (i, s) in command_list.iter().enumerate() {
|
for (i, s) in command_list.iter().enumerate() {
|
||||||
commands.push(Command::new(command_names.get(i).copied(), s));
|
commands.push(Command::new(command_names.get(i).copied(), s));
|
||||||
@@ -285,16 +283,16 @@ impl<'a> Commands<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_parameter_scan_commands<'b>(
|
fn get_parameter_scan_commands<'b>(
|
||||||
command_names: Option<Values<'b>>,
|
command_names: Option<ValuesRef<'b, String>>,
|
||||||
command_strings: Values<'b>,
|
command_strings: Vec<&'b str>,
|
||||||
mut vals: clap::Values<'b>,
|
mut vals: ValuesRef<'b, String>,
|
||||||
step: Option<&str>,
|
step: Option<&str>,
|
||||||
) -> Result<Vec<Command<'b>>, ParameterScanError> {
|
) -> Result<Vec<Command<'b>>, ParameterScanError> {
|
||||||
let command_names = command_names.map_or(vec![], |names| names.collect::<Vec<&str>>());
|
let command_names = command_names.map_or(vec![], |names| names.map(|v| v.as_str()).collect::<Vec<_>>());
|
||||||
let command_strings = command_strings.collect::<Vec<&str>>();
|
let command_strings = command_strings;
|
||||||
let param_name = vals.next().unwrap();
|
let param_name = vals.next().unwrap().as_str();
|
||||||
let param_min = vals.next().unwrap();
|
let param_min = vals.next().unwrap().as_str();
|
||||||
let param_max = vals.next().unwrap();
|
let param_max = vals.next().unwrap().as_str();
|
||||||
|
|
||||||
// attempt to parse as integers
|
// attempt to parse as integers
|
||||||
if let (Ok(param_min), Ok(param_max), Ok(step)) = (
|
if let (Ok(param_min), Ok(param_max), Ok(step)) = (
|
||||||
|
|||||||
Reference in new issue
Block a user