Skip to content

Commit

Permalink
feat(parser): Allow querying whether actions take values
Browse files Browse the repository at this point in the history
  • Loading branch information
epage committed Jun 6, 2022
1 parent 955f8b6 commit 4489f09
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 16 deletions.
32 changes: 18 additions & 14 deletions src/builder/action.rs
Expand Up @@ -276,6 +276,24 @@ pub enum ArgAction {
}

impl ArgAction {
/// Returns whether this action accepts values on the command-line
///
/// [`default_values`][super::Arg::default_values] and [`env`][super::Arg::env] may still be
/// processed.
pub fn takes_values(&self) -> bool {
match self {
Self::Set => true,
Self::Append => true,
Self::StoreValue => true,
Self::IncOccurrence => false,
Self::SetTrue => false,
Self::SetFalse => false,
Self::Count => false,
Self::Help => false,
Self::Version => false,
}
}

pub(crate) fn default_value(&self) -> Option<&'static std::ffi::OsStr> {
match self {
Self::Set => None,
Expand All @@ -290,20 +308,6 @@ impl ArgAction {
}
}

pub(crate) fn takes_value(&self) -> bool {
match self {
Self::Set => true,
Self::Append => true,
Self::StoreValue => true,
Self::IncOccurrence => false,
Self::SetTrue => false,
Self::SetFalse => false,
Self::Count => false,
Self::Help => false,
Self::Version => false,
}
}

pub(crate) fn default_value_parser(&self) -> Option<super::ValueParser> {
match self {
Self::Set => None,
Expand Down
2 changes: 1 addition & 1 deletion src/builder/arg.rs
Expand Up @@ -4897,7 +4897,7 @@ impl<'help> Arg<'help> {
self.default_vals = vec![default_value];
}
}
if action.takes_value() {
if action.takes_values() {
self.settings.set(ArgSettings::TakesValue);
} else {
self.settings.unset(ArgSettings::TakesValue);
Expand Down
2 changes: 1 addition & 1 deletion src/builder/debug_asserts.rs
Expand Up @@ -643,7 +643,7 @@ fn assert_arg(arg: &Arg) {
);

assert_eq!(
arg.get_action().takes_value(),
arg.get_action().takes_values(),
arg.is_takes_value_set(),
"Argument `{}`'s selected action {:?} contradicts `takes_value`",
arg.name,
Expand Down

0 comments on commit 4489f09

Please sign in to comment.