getopt: indentation reduction
See the `git diff -w` output: |diff --git a/src/getopts.rs b/src/getopts.rs |index 6548a01..517cc37 100644 |--- a/src/getopts.rs |+++ b/src/getopts.rs |@@ -72,7 +72,10 @@ pub fn parse_arguments( | while pos < args.len() { | if skip { | rest.push(args[pos].clone()); |- } else { |+ pos += 1; |+ continue; |+ } |+ | match parse_argument(&args[pos]) { | RawArgument::Separator => { | skip = true; |@@ -135,7 +138,6 @@ pub fn parse_arguments( | rest.push(value); | } | } |- } | | pos += 1; | } Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
parent
ad8a98f7e4
commit
99da3a073d
110
src/getopts.rs
110
src/getopts.rs
|
@ -72,68 +72,70 @@ pub fn parse_arguments(
|
||||||
while pos < args.len() {
|
while pos < args.len() {
|
||||||
if skip {
|
if skip {
|
||||||
rest.push(args[pos].clone());
|
rest.push(args[pos].clone());
|
||||||
} else {
|
pos += 1;
|
||||||
match parse_argument(&args[pos]) {
|
continue;
|
||||||
RawArgument::Separator => {
|
}
|
||||||
skip = true;
|
|
||||||
}
|
|
||||||
RawArgument::Option { name, value } => {
|
|
||||||
match value {
|
|
||||||
None => {
|
|
||||||
let mut want_bool = false;
|
|
||||||
let mut can_default = false;
|
|
||||||
if let Some((_optional, param_schema)) = properties.get::<str>(&name) {
|
|
||||||
if let Schema::Boolean(boolean_schema) = param_schema.as_ref() {
|
|
||||||
want_bool = true;
|
|
||||||
if let Some(default) = boolean_schema.default {
|
|
||||||
if default == false { can_default = true; }
|
|
||||||
} else {
|
|
||||||
can_default = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut next_is_argument = false;
|
match parse_argument(&args[pos]) {
|
||||||
let mut next_is_bool = false;
|
RawArgument::Separator => {
|
||||||
|
skip = true;
|
||||||
if (pos + 1) < args.len() {
|
}
|
||||||
let next = &args[pos+1];
|
RawArgument::Option { name, value } => {
|
||||||
if let RawArgument::Argument { value: _} = parse_argument(next) {
|
match value {
|
||||||
next_is_argument = true;
|
None => {
|
||||||
if let Ok(_) = parse_boolean(next) { next_is_bool = true; }
|
let mut want_bool = false;
|
||||||
}
|
let mut can_default = false;
|
||||||
}
|
if let Some((_optional, param_schema)) = properties.get::<str>(&name) {
|
||||||
|
if let Schema::Boolean(boolean_schema) = param_schema.as_ref() {
|
||||||
if want_bool {
|
want_bool = true;
|
||||||
if next_is_bool {
|
if let Some(default) = boolean_schema.default {
|
||||||
pos += 1;
|
if default == false { can_default = true; }
|
||||||
data.push((name, args[pos].clone()));
|
|
||||||
} else if can_default {
|
|
||||||
data.push((name, "true".to_string()));
|
|
||||||
} else {
|
} else {
|
||||||
errors.push(format_err!("parameter '{}': {}", name,
|
can_default = true;
|
||||||
"missing boolean value."));
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if next_is_argument {
|
|
||||||
pos += 1;
|
|
||||||
data.push((name, args[pos].clone()));
|
|
||||||
} else {
|
|
||||||
errors.push(format_err!("parameter '{}': {}", name,
|
|
||||||
"missing parameter value."));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Some(v) => {
|
|
||||||
data.push((name, v));
|
let mut next_is_argument = false;
|
||||||
|
let mut next_is_bool = false;
|
||||||
|
|
||||||
|
if (pos + 1) < args.len() {
|
||||||
|
let next = &args[pos+1];
|
||||||
|
if let RawArgument::Argument { value: _} = parse_argument(next) {
|
||||||
|
next_is_argument = true;
|
||||||
|
if let Ok(_) = parse_boolean(next) { next_is_bool = true; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if want_bool {
|
||||||
|
if next_is_bool {
|
||||||
|
pos += 1;
|
||||||
|
data.push((name, args[pos].clone()));
|
||||||
|
} else if can_default {
|
||||||
|
data.push((name, "true".to_string()));
|
||||||
|
} else {
|
||||||
|
errors.push(format_err!("parameter '{}': {}", name,
|
||||||
|
"missing boolean value."));
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if next_is_argument {
|
||||||
|
pos += 1;
|
||||||
|
data.push((name, args[pos].clone()));
|
||||||
|
} else {
|
||||||
|
errors.push(format_err!("parameter '{}': {}", name,
|
||||||
|
"missing parameter value."));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Some(v) => {
|
||||||
|
data.push((name, v));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
RawArgument::Argument { value } => {
|
}
|
||||||
rest.push(value);
|
RawArgument::Argument { value } => {
|
||||||
}
|
rest.push(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue