fix(Usage Strings): fixes a bug ordering of elements in usage strings

Closes #298
This commit is contained in:
Kevin K 2015-10-01 12:33:37 -04:00
parent dcfe9652ee
commit aaf0d6fe7a

View file

@ -1325,7 +1325,6 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
acc + &format!(" {}", s)[..] acc + &format!(" {}", s)[..]
}); });
if !self.flags.is_empty() && !self.settings.is_set(&AppSettings::UnifiedHelpMessage) { if !self.flags.is_empty() && !self.settings.is_set(&AppSettings::UnifiedHelpMessage) {
usage.push_str(" [FLAGS]"); usage.push_str(" [FLAGS]");
} else { } else {
@ -1335,11 +1334,16 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
self.opts.values().any(|a| !a.settings.is_set(&ArgSettings::Required)) { self.opts.values().any(|a| !a.settings.is_set(&ArgSettings::Required)) {
usage.push_str(" [OPTIONS]"); usage.push_str(" [OPTIONS]");
} }
usage.push_str(&req_string[..]);
// places a '--' in the usage string if there are args and options // places a '--' in the usage string if there are args and options
// supporting multiple values // supporting multiple values
if !self.positionals_idx.is_empty() && self.opts.values().any(|a| a.settings.is_set(&ArgSettings::Multiple)) && if !self.positionals_idx.is_empty() &&
!self.opts.values().any(|a| a.settings.is_set(&ArgSettings::Required)) && (self.opts.values().any(|a| a.settings.is_set(&ArgSettings::Multiple)) ||
self.subcommands.is_empty() { self.positionals_idx.values().any(|a| a.settings.is_set(&ArgSettings::Multiple))) &&
!self.opts.values().any(|a| a.settings.is_set(&ArgSettings::Required)) &&
self.subcommands.is_empty() {
usage.push_str(" [--]") usage.push_str(" [--]")
} }
if !self.positionals_idx.is_empty() && if !self.positionals_idx.is_empty() &&
@ -1348,7 +1352,6 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
usage.push_str(" [ARGS]"); usage.push_str(" [ARGS]");
} }
usage.push_str(&req_string[..]);
if !self.subcommands.is_empty() && !self.settings.is_set(&AppSettings::SubcommandRequired) { if !self.subcommands.is_empty() && !self.settings.is_set(&AppSettings::SubcommandRequired) {
usage.push_str(" [SUBCOMMAND]"); usage.push_str(" [SUBCOMMAND]");