Arg::required_unless_one => required_unless_eq_any

This commit is contained in:
CreepySkeleton 2020-05-31 04:39:24 +03:00
parent ddd55e57dc
commit 6b6b6035ed
2 changed files with 26 additions and 26 deletions

View file

@ -689,7 +689,7 @@ impl<'help> Arg<'help> {
/// all these other arguments are present).
///
/// **NOTE:** If you wish for this argument to only be required if *one of* these args are
/// present see [`Arg::required_unless_one`]
/// present see [`Arg::required_unless_eq_any`]
///
/// # Examples
///
@ -746,7 +746,7 @@ impl<'help> Arg<'help> {
/// assert!(res.is_err());
/// assert_eq!(res.unwrap_err().kind, ErrorKind::MissingRequiredArgument);
/// ```
/// [`Arg::required_unless_one`]: ./struct.Arg.html#method.required_unless_one
/// [`Arg::required_unless_eq_any`]: ./struct.Arg.html#method.required_unless_eq_any
/// [`Arg::required_unless_all(names)`]: ./struct.Arg.html#method.required_unless_all
pub fn required_unless_all(mut self, names: &[&str]) -> Self {
self.r_unless.extend(names.iter().map(Id::from));
@ -768,7 +768,7 @@ impl<'help> Arg<'help> {
/// # ;
/// ```
///
/// Setting [`Arg::required_unless_one(names)`] requires that the argument be used at runtime
/// Setting [`Arg::required_unless_eq_any(names)`] requires that the argument be used at runtime
/// *unless* *at least one of* the args in `names` are present. In the following example, the
/// required argument is *not* provided, but it's not an error because one the `unless` args
/// have been supplied.
@ -777,7 +777,7 @@ impl<'help> Arg<'help> {
/// # use clap::{App, Arg};
/// let res = App::new("prog")
/// .arg(Arg::new("cfg")
/// .required_unless_one(&["dbg", "infile"])
/// .required_unless_eq_any(&["dbg", "infile"])
/// .takes_value(true)
/// .long("config"))
/// .arg(Arg::new("dbg")
@ -792,14 +792,14 @@ impl<'help> Arg<'help> {
/// assert!(res.is_ok());
/// ```
///
/// Setting [`Arg::required_unless_one(names)`] and *not* supplying *at least one of* `names`
/// Setting [`Arg::required_unless_eq_any(names)`] and *not* supplying *at least one of* `names`
/// or this arg is an error.
///
/// ```rust
/// # use clap::{App, Arg, ErrorKind};
/// let res = App::new("prog")
/// .arg(Arg::new("cfg")
/// .required_unless_one(&["dbg", "infile"])
/// .required_unless_eq_any(&["dbg", "infile"])
/// .takes_value(true)
/// .long("config"))
/// .arg(Arg::new("dbg")
@ -815,9 +815,9 @@ impl<'help> Arg<'help> {
/// assert_eq!(res.unwrap_err().kind, ErrorKind::MissingRequiredArgument);
/// ```
/// [required]: ./struct.Arg.html#method.required
/// [`Arg::required_unless_one(names)`]: ./struct.Arg.html#method.required_unless_one
/// [`Arg::required_unless_eq_any(names)`]: ./struct.Arg.html#method.required_unless_eq_any
/// [`Arg::required_unless_all`]: ./struct.Arg.html#method.required_unless_all
pub fn required_unless_one(mut self, names: &[&str]) -> Self {
pub fn required_unless_eq_any(mut self, names: &[&str]) -> Self {
self.r_unless.extend(names.iter().map(Id::from));
self
}
@ -4323,7 +4323,7 @@ impl<'help> From<&'help Yaml> for Arg<'help> {
"overrides_with" => yaml_vec_or_str!(v, a, overrides_with),
"possible_values" => yaml_vec_or_str!(v, a, possible_value),
"case_insensitive" => yaml_to_bool!(a, v, case_insensitive),
"required_unless_one" => yaml_vec_or_str!(v, a, required_unless),
"required_unless_eq_any" => yaml_vec_or_str!(v, a, required_unless),
"required_unless_all" => {
a = yaml_vec_or_str!(v, a, required_unless);
a.set_mut(ArgSettings::RequiredUnlessAll);

View file

@ -288,11 +288,11 @@ fn required_unless_all_err() {
// REQUIRED_UNLESS_ONE
#[test]
fn required_unless_one() {
fn required_unless_eq_any() {
let res = App::new("unlessone")
.arg(
Arg::new("cfg")
.required_unless_one(&["dbg", "infile"])
.required_unless_eq_any(&["dbg", "infile"])
.takes_value(true)
.long("config"),
)
@ -307,13 +307,13 @@ fn required_unless_one() {
}
#[test]
fn required_unless_one_2() {
// This tests that the required_unless_one works when the second arg in the array is used
fn required_unless_any_2() {
// This tests that the required_unless_eq_any works when the second arg in the array is used
// instead of the first.
let res = App::new("unlessone")
.arg(
Arg::new("cfg")
.required_unless_one(&["dbg", "infile"])
.required_unless_eq_any(&["dbg", "infile"])
.takes_value(true)
.long("config"),
)
@ -328,48 +328,48 @@ fn required_unless_one_2() {
}
#[test]
fn required_unless_one_works_with_short() {
fn required_unless_any_works_with_short() {
// GitHub issue: https://github.com/kbknapp/clap-rs/issues/1135
let res = App::new("unlessone")
.arg(Arg::new("a").conflicts_with("b").short('a'))
.arg(Arg::new("b").short('b'))
.arg(Arg::new("x").short('x').required_unless_one(&["a", "b"]))
.arg(Arg::new("x").short('x').required_unless_eq_any(&["a", "b"]))
.try_get_matches_from(vec!["unlessone", "-a"]);
assert!(res.is_ok());
}
#[test]
fn required_unless_one_works_with_short_err() {
fn required_unless_any_works_with_short_err() {
let res = App::new("unlessone")
.arg(Arg::new("a").conflicts_with("b").short('a'))
.arg(Arg::new("b").short('b'))
.arg(Arg::new("x").short('x').required_unless_one(&["a", "b"]))
.arg(Arg::new("x").short('x').required_unless_eq_any(&["a", "b"]))
.try_get_matches_from(vec!["unlessone"]);
assert!(!res.is_ok());
}
#[test]
fn required_unless_one_works_without() {
fn required_unless_any_works_without() {
let res = App::new("unlessone")
.arg(Arg::new("a").conflicts_with("b").short('a'))
.arg(Arg::new("b").short('b'))
.arg(Arg::new("x").required_unless_one(&["a", "b"]))
.arg(Arg::new("x").required_unless_eq_any(&["a", "b"]))
.try_get_matches_from(vec!["unlessone", "-a"]);
assert!(res.is_ok());
}
#[test]
fn required_unless_one_works_with_long() {
fn required_unless_any_works_with_long() {
let res = App::new("unlessone")
.arg(Arg::new("a").conflicts_with("b").short('a'))
.arg(Arg::new("b").short('b'))
.arg(
Arg::new("x")
.long("x_is_the_option")
.required_unless_one(&["a", "b"]),
.required_unless_eq_any(&["a", "b"]),
)
.try_get_matches_from(vec!["unlessone", "-a"]);
@ -377,11 +377,11 @@ fn required_unless_one_works_with_long() {
}
#[test]
fn required_unless_one_1() {
fn required_unless_any_1() {
let res = App::new("unlessone")
.arg(
Arg::new("cfg")
.required_unless_one(&["dbg", "infile"])
.required_unless_eq_any(&["dbg", "infile"])
.takes_value(true)
.long("config"),
)
@ -397,11 +397,11 @@ fn required_unless_one_1() {
}
#[test]
fn required_unless_one_err() {
fn required_unless_any_err() {
let res = App::new("unlessone")
.arg(
Arg::new("cfg")
.required_unless_one(&["dbg", "infile"])
.required_unless_eq_any(&["dbg", "infile"])
.takes_value(true)
.long("config"),
)