summaryrefslogtreecommitdiffstats
path: root/vendor/xflags
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/xflags')
-rw-r--r--vendor/xflags/.cargo-checksum.json2
-rw-r--r--vendor/xflags/Cargo.lock6
-rw-r--r--vendor/xflags/Cargo.toml4
-rw-r--r--vendor/xflags/src/rt.rs58
4 files changed, 35 insertions, 35 deletions
diff --git a/vendor/xflags/.cargo-checksum.json b/vendor/xflags/.cargo-checksum.json
index 1fa4dd9e5..ccb82afb6 100644
--- a/vendor/xflags/.cargo-checksum.json
+++ b/vendor/xflags/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"bff2ffbef3ca253bcde1624bfc2c2afd244ca39b44e7dd3f4b463873904129c7","Cargo.toml":"faa866c2c32635dfa6d600103595777c330520df5e73aa0461d6f34eb21bbd9a","examples/hello-generated.rs":"3bf7922435ae84e2b8ae022aba1d693fc4e523b354d3141cc62a183864531f31","examples/hello.rs":"235426d1a69eeba790d1e4fc2ac4fa8f30ca16952edb2a026cf6f4b8c78d6fec","examples/immediate-mode.rs":"dcae135769b6104801de7b91fd220fb28ddae097ba7b0474fe32c28a90c4dfef","examples/longer.rs":"b55684fdde16a8462e1c1afaa9f30e75e3472abfcabe950403733c767dd7de96","examples/non-utf8.rs":"23b563180d1d616f81e224890192799a06fdbc21f3ccb7e4234ca51b3c467a9a","src/lib.rs":"780d7be977abefaa4c7229733a916d88480c9228ddb0f9bc2a25aaa626f7f7d7","src/rt.rs":"b80e6b1e180b0bd0fd523a6bc74d6bba40da7af461de37c33c3735bfb3c66254"},"package":"cbf19f5031a1a812e96fede16f8161218883079946cea87619d3613db1efd268"} \ No newline at end of file
+{"files":{"Cargo.lock":"29daddfd833005b0bce977a938c88f5d48e1e7f2112950b266719c0d9c30de87","Cargo.toml":"027201abeeab5b32f12827e94aa78a9e96e43e9c59aa99b1f038949103e1fdd9","examples/hello-generated.rs":"3bf7922435ae84e2b8ae022aba1d693fc4e523b354d3141cc62a183864531f31","examples/hello.rs":"235426d1a69eeba790d1e4fc2ac4fa8f30ca16952edb2a026cf6f4b8c78d6fec","examples/immediate-mode.rs":"dcae135769b6104801de7b91fd220fb28ddae097ba7b0474fe32c28a90c4dfef","examples/longer.rs":"b55684fdde16a8462e1c1afaa9f30e75e3472abfcabe950403733c767dd7de96","examples/non-utf8.rs":"23b563180d1d616f81e224890192799a06fdbc21f3ccb7e4234ca51b3c467a9a","src/lib.rs":"780d7be977abefaa4c7229733a916d88480c9228ddb0f9bc2a25aaa626f7f7d7","src/rt.rs":"be5393c690afde9c8c31b01471100eec21742f735983ef9074c3675daf942ac7"},"package":"c4554b580522d0ca238369c16b8f6ce34524d61dafe7244993754bbd05f2c2ea"} \ No newline at end of file
diff --git a/vendor/xflags/Cargo.lock b/vendor/xflags/Cargo.lock
index e2020eb16..d4df44759 100644
--- a/vendor/xflags/Cargo.lock
+++ b/vendor/xflags/Cargo.lock
@@ -4,13 +4,13 @@ version = 3
[[package]]
name = "xflags"
-version = "0.3.0"
+version = "0.3.1"
dependencies = [
"xflags-macros",
]
[[package]]
name = "xflags-macros"
-version = "0.3.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2afbd7f2039bb6cad2dd45f0c5dff49c0d4e26118398768b7a605524d4251809"
+checksum = "f58e7b3ca8977093aae6b87b6a7730216fc4c53a6530bab5c43a783cd810c1a8"
diff --git a/vendor/xflags/Cargo.toml b/vendor/xflags/Cargo.toml
index 091002385..3db90b6be 100644
--- a/vendor/xflags/Cargo.toml
+++ b/vendor/xflags/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "xflags"
-version = "0.3.0"
+version = "0.3.1"
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]
description = "Moderately simple command line arguments parser."
categories = ["command-line-interface"]
@@ -21,4 +21,4 @@ repository = "https://github.com/matklad/xflags"
resolver = "1"
[dependencies.xflags-macros]
-version = "=0.3.0"
+version = "=0.3.1"
diff --git a/vendor/xflags/src/rt.rs b/vendor/xflags/src/rt.rs
index 988e6cc23..0b3d98c2b 100644
--- a/vendor/xflags/src/rt.rs
+++ b/vendor/xflags/src/rt.rs
@@ -15,36 +15,41 @@ macro_rules! bail {
}
pub struct Parser {
+ after_double_dash: bool,
rargs: Vec<OsString>,
}
impl Parser {
pub fn new(mut args: Vec<OsString>) -> Self {
args.reverse();
- Self { rargs: args }
+ Self { after_double_dash: false, rargs: args }
}
pub fn new_from_env() -> Self {
- let mut args = std::env::args_os().collect::<Vec<_>>();
- args.reverse();
- args.pop();
- Self { rargs: args }
- }
-
- pub fn is_empty(&self) -> bool {
- self.rargs.is_empty()
+ let args = std::env::args_os().collect::<Vec<_>>();
+ let mut res = Parser::new(args);
+ let _progn = res.next();
+ res
}
- pub fn peek_flag(&self) -> Option<&str> {
- self.rargs.last().and_then(|it| it.to_str()).filter(|it| it.starts_with('-'))
- }
pub fn pop_flag(&mut self) -> Option<Result<String, OsString>> {
- if self.peek_flag().is_some() {
- self.next().map(|it| it.into_string())
- } else {
+ if self.after_double_dash {
self.next().map(Err)
+ } else {
+ let arg = self.next()?;
+ let arg_str = arg.to_str().unwrap_or_default();
+ if arg_str.starts_with('-') {
+ if arg_str == "--" {
+ self.after_double_dash = true;
+ return self.next().map(Err);
+ }
+ Some(arg.into_string())
+ } else {
+ Some(Err(arg))
+ }
}
}
+
pub fn push_back(&mut self, arg: Result<String, OsString>) {
let arg = match arg {
Ok(it) => it.into(),
@@ -53,15 +58,12 @@ impl Parser {
self.rargs.push(arg)
}
- pub fn next(&mut self) -> Option<OsString> {
+ fn next(&mut self) -> Option<OsString> {
self.rargs.pop()
}
pub fn next_value(&mut self, flag: &str) -> Result<OsString> {
- if self.peek_flag().is_some() {
- bail!("expected a value for `{}`", flag)
- }
- self.next().ok_or_else(|| format_err!("expected a value for `{}`", flag))
+ self.next().ok_or_else(|| format_err!("expected a value for `{flag}`"))
}
pub fn next_value_from_str<T: FromStr>(&mut self, flag: &str) -> Result<T>
@@ -77,21 +79,19 @@ impl Parser {
T::Err: fmt::Display,
{
match value.into_string() {
- Ok(str) => {
- str.parse::<T>().map_err(|err| format_err!("can't parse `{}`, {}", flag, err))
- }
+ Ok(str) => str.parse::<T>().map_err(|err| format_err!("can't parse `{flag}`, {err}")),
Err(it) => {
- bail!("can't parse `{}`, invalid utf8: {:?}", flag, it)
+ bail!("can't parse `{flag}`, invalid utf8: {it:?}")
}
}
}
pub fn unexpected_flag(&self, flag: &str) -> Error {
- format_err!("unexpected flag: `{}`", flag)
+ format_err!("unexpected flag: `{flag}`")
}
pub fn unexpected_arg(&self, arg: OsString) -> Error {
- format_err!("unexpected argument: {:?}", arg)
+ format_err!("unexpected argument: {arg:?}")
}
pub fn subcommand_required(&self) -> Error {
@@ -104,15 +104,15 @@ impl Parser {
pub fn optional<T>(&self, flag: &str, mut vals: Vec<T>) -> Result<Option<T>> {
if vals.len() > 1 {
- bail!("flag specified more than once: `{}`", flag)
+ bail!("flag specified more than once: `{flag}`")
}
Ok(vals.pop())
}
pub fn required<T>(&self, flag: &str, mut vals: Vec<T>) -> Result<T> {
if vals.len() > 1 {
- bail!("flag specified more than once: `{}`", flag)
+ bail!("flag specified more than once: `{flag}`")
}
- vals.pop().ok_or_else(|| format_err!("flag is required: `{}`", flag))
+ vals.pop().ok_or_else(|| format_err!("flag is required: `{flag}`"))
}
}