mirror of
https://github.com/clap-rs/clap
synced 2024-12-13 22:32:33 +00:00
fix(usage): Move positional args to end of usage string (#2492)
* Move positional args to end of USAGE * Remove -- from usage string
This commit is contained in:
parent
abe2373cca
commit
460459c771
3 changed files with 24 additions and 30 deletions
|
@ -408,23 +408,6 @@ impl<'help, 'app, 'parser> Usage<'help, 'app, 'parser> {
|
||||||
.flat_map(|g| self.p.app.unroll_args_in_group(&g.id))
|
.flat_map(|g| self.p.app.unroll_args_in_group(&g.id))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let pmap = unrolled_reqs
|
|
||||||
.iter()
|
|
||||||
.chain(incls.iter())
|
|
||||||
.filter(|a| self.p.app.get_positionals().any(|p| &&p.id == a))
|
|
||||||
.filter(|&pos| matcher.map_or(true, |m| !m.contains(pos)))
|
|
||||||
.filter_map(|pos| self.p.app.find(pos))
|
|
||||||
.filter(|&pos| incl_last || !pos.is_set(ArgSettings::Last))
|
|
||||||
.filter(|pos| !args_in_groups.contains(&pos.id))
|
|
||||||
.map(|pos| (pos.index.unwrap(), pos))
|
|
||||||
.collect::<BTreeMap<usize, &Arg>>(); // sort by index
|
|
||||||
|
|
||||||
for p in pmap.values() {
|
|
||||||
debug!("Usage::get_required_usage_from:iter:{:?}", p.id);
|
|
||||||
if !args_in_groups.contains(&p.id) {
|
|
||||||
ret_val.push(p.to_string());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for a in unrolled_reqs
|
for a in unrolled_reqs
|
||||||
.iter()
|
.iter()
|
||||||
.chain(incls.iter())
|
.chain(incls.iter())
|
||||||
|
@ -434,12 +417,7 @@ impl<'help, 'app, 'parser> Usage<'help, 'app, 'parser> {
|
||||||
.filter(|name| !(matcher.is_some() && matcher.as_ref().unwrap().contains(name)))
|
.filter(|name| !(matcher.is_some() && matcher.as_ref().unwrap().contains(name)))
|
||||||
{
|
{
|
||||||
debug!("Usage::get_required_usage_from:iter:{:?}", a);
|
debug!("Usage::get_required_usage_from:iter:{:?}", a);
|
||||||
let arg = self
|
let arg = self.p.app.find(&a).expect(INTERNAL_ERROR_MSG).to_string();
|
||||||
.p
|
|
||||||
.app
|
|
||||||
.find(&a)
|
|
||||||
.map(ToString::to_string)
|
|
||||||
.expect(INTERNAL_ERROR_MSG);
|
|
||||||
ret_val.push(arg);
|
ret_val.push(arg);
|
||||||
}
|
}
|
||||||
let mut g_vec: Vec<String> = vec![];
|
let mut g_vec: Vec<String> = vec![];
|
||||||
|
@ -465,8 +443,24 @@ impl<'help, 'app, 'parser> Usage<'help, 'app, 'parser> {
|
||||||
g_vec.push(elem);
|
g_vec.push(elem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for g in g_vec {
|
ret_val.extend_from_slice(&g_vec);
|
||||||
ret_val.push(g);
|
|
||||||
|
let pmap = unrolled_reqs
|
||||||
|
.iter()
|
||||||
|
.chain(incls.iter())
|
||||||
|
.filter(|a| self.p.app.get_positionals().any(|p| &&p.id == a))
|
||||||
|
.filter(|&pos| matcher.map_or(true, |m| !m.contains(pos)))
|
||||||
|
.filter_map(|pos| self.p.app.find(pos))
|
||||||
|
.filter(|&pos| incl_last || !pos.is_set(ArgSettings::Last))
|
||||||
|
.filter(|pos| !args_in_groups.contains(&pos.id))
|
||||||
|
.map(|pos| (pos.index.unwrap(), pos))
|
||||||
|
.collect::<BTreeMap<usize, &Arg>>(); // sort by index
|
||||||
|
|
||||||
|
for p in pmap.values() {
|
||||||
|
debug!("Usage::get_required_usage_from:iter:{:?}", p.id);
|
||||||
|
if !args_in_groups.contains(&p.id) {
|
||||||
|
ret_val.push(p.to_string());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
debug!("Usage::get_required_usage_from: ret_val={:?}", ret_val);
|
debug!("Usage::get_required_usage_from: ret_val={:?}", ret_val);
|
||||||
|
|
|
@ -5,14 +5,14 @@ use clap::{App, Arg, ArgGroup, ErrorKind};
|
||||||
static CONFLICT_ERR: &str = "error: The argument '-F' cannot be used with '--flag'
|
static CONFLICT_ERR: &str = "error: The argument '-F' cannot be used with '--flag'
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
clap-test <positional> <positional2> --flag --long-option-2 <option2>
|
clap-test --flag --long-option-2 <option2> <positional> <positional2>
|
||||||
|
|
||||||
For more information try --help";
|
For more information try --help";
|
||||||
|
|
||||||
static CONFLICT_ERR_REV: &str = "error: The argument '--flag' cannot be used with '-F'
|
static CONFLICT_ERR_REV: &str = "error: The argument '--flag' cannot be used with '-F'
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
clap-test <positional> <positional2> -F --long-option-2 <option2>
|
clap-test -F --long-option-2 <option2> <positional> <positional2>
|
||||||
|
|
||||||
For more information try --help";
|
For more information try --help";
|
||||||
|
|
||||||
|
|
|
@ -28,11 +28,11 @@ USAGE:
|
||||||
For more information try --help";
|
For more information try --help";
|
||||||
|
|
||||||
static MISSING_REQ: &str = "error: The following required arguments were not provided:
|
static MISSING_REQ: &str = "error: The following required arguments were not provided:
|
||||||
<positional2>
|
|
||||||
--long-option-2 <option2>
|
--long-option-2 <option2>
|
||||||
|
<positional2>
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
clap-test <positional2> --long-option-2 <option2> -F
|
clap-test --long-option-2 <option2> -F <positional2>
|
||||||
|
|
||||||
For more information try --help";
|
For more information try --help";
|
||||||
|
|
||||||
|
@ -913,7 +913,7 @@ static ISSUE_1158: &str = "error: The following required arguments were not prov
|
||||||
-z <Z>
|
-z <Z>
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
example <ID> -x <X> -y <Y> -z <Z>
|
example -x <X> -y <Y> -z <Z> <ID>
|
||||||
|
|
||||||
For more information try --help";
|
For more information try --help";
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue