mirror of
https://github.com/clap-rs/clap
synced 2025-03-04 23:37:32 +00:00
Merge pull request #3449 from epage/app
fix: Deprecate most AppSettings
This commit is contained in:
commit
f7b5cdc108
53 changed files with 1714 additions and 1155 deletions
|
@ -1,4 +1,4 @@
|
|||
use clap::{arg, App, AppSettings, Arg};
|
||||
use clap::{arg, App, Arg};
|
||||
use criterion::{criterion_group, criterion_main, Criterion};
|
||||
|
||||
static OPT3_VALS: [&str; 2] = ["fast", "slow"];
|
||||
|
@ -257,7 +257,7 @@ pub fn parse_args_negate_scs(c: &mut Criterion) {
|
|||
c.bench_function("parse_args_negate_scs", |b| {
|
||||
b.iter(|| {
|
||||
create_app!()
|
||||
.setting(AppSettings::ArgsNegateSubcommands)
|
||||
.args_conflicts_with_subcommands(true)
|
||||
.get_matches_from(vec![
|
||||
"myprog",
|
||||
"arg1",
|
||||
|
|
|
@ -43,7 +43,7 @@ fn build_cli() -> App<'static> {
|
|||
App::new("install")
|
||||
.about("Update Rust toolchains")
|
||||
.after_help(TOOLCHAIN_INSTALL_HELP)
|
||||
.setting(AppSettings::Hidden) // synonym for 'toolchain install'
|
||||
.hide(true) // synonym for 'toolchain install'
|
||||
.arg(Arg::new("toolchain").required(true)),
|
||||
)
|
||||
.subcommand(
|
||||
|
@ -89,17 +89,17 @@ fn build_cli() -> App<'static> {
|
|||
)
|
||||
.subcommand(
|
||||
App::new("update")
|
||||
.setting(AppSettings::Hidden) // synonym for 'install'
|
||||
.hide(true) // synonym for 'install'
|
||||
.arg(Arg::new("toolchain").required(true)),
|
||||
)
|
||||
.subcommand(
|
||||
App::new("add")
|
||||
.setting(AppSettings::Hidden) // synonym for 'install'
|
||||
.hide(true) // synonym for 'install'
|
||||
.arg(Arg::new("toolchain").required(true)),
|
||||
)
|
||||
.subcommand(
|
||||
App::new("remove")
|
||||
.setting(AppSettings::Hidden) // synonym for 'uninstall'
|
||||
.hide(true) // synonym for 'uninstall'
|
||||
.arg(Arg::new("toolchain").required(true)),
|
||||
),
|
||||
)
|
||||
|
@ -127,13 +127,13 @@ fn build_cli() -> App<'static> {
|
|||
)
|
||||
.subcommand(
|
||||
App::new("install")
|
||||
.setting(AppSettings::Hidden) // synonym for 'add'
|
||||
.hide(true) // synonym for 'add'
|
||||
.arg(Arg::new("target").required(true))
|
||||
.arg(Arg::new("toolchain").long("toolchain").takes_value(true)),
|
||||
)
|
||||
.subcommand(
|
||||
App::new("uninstall")
|
||||
.setting(AppSettings::Hidden) // synonym for 'remove'
|
||||
.hide(true) // synonym for 'remove'
|
||||
.arg(Arg::new("target").required(true))
|
||||
.arg(Arg::new("toolchain").long("toolchain").takes_value(true)),
|
||||
),
|
||||
|
@ -193,12 +193,12 @@ fn build_cli() -> App<'static> {
|
|||
)
|
||||
.subcommand(
|
||||
App::new("add")
|
||||
.setting(AppSettings::Hidden) // synonym for 'set'
|
||||
.hide(true) // synonym for 'set'
|
||||
.arg(Arg::new("toolchain").required(true)),
|
||||
)
|
||||
.subcommand(
|
||||
App::new("remove")
|
||||
.setting(AppSettings::Hidden) // synonym for 'unset'
|
||||
.hide(true) // synonym for 'unset'
|
||||
.about("Remove the override toolchain for a directory")
|
||||
.arg(Arg::new("path").long("path").takes_value(true))
|
||||
.arg(
|
||||
|
@ -212,7 +212,7 @@ fn build_cli() -> App<'static> {
|
|||
App::new("run")
|
||||
.about("Run a command with an environment configured for a given toolchain")
|
||||
.after_help(RUN_HELP)
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.trailing_var_arg(true)
|
||||
.arg(Arg::new("toolchain").required(true))
|
||||
.arg(
|
||||
Arg::new("command")
|
||||
|
@ -264,7 +264,7 @@ fn build_cli() -> App<'static> {
|
|||
.subcommand(
|
||||
App::new("telemetry")
|
||||
.about("rustup telemetry commands")
|
||||
.setting(AppSettings::Hidden)
|
||||
.hide(true)
|
||||
.setting(AppSettings::DeriveDisplayOrder)
|
||||
.subcommand(App::new("enable").about("Enable rustup telemetry"))
|
||||
.subcommand(App::new("disable").about("Disable rustup telemetry"))
|
||||
|
|
|
@ -12,14 +12,14 @@
|
|||
//! . ./value_hints.fish
|
||||
//! ./target/debug/examples/value_hints --<TAB>
|
||||
//! ```
|
||||
use clap::{App, AppSettings, Arg, ValueHint};
|
||||
use clap::{App, Arg, ValueHint};
|
||||
use clap_complete::{generate, Generator, Shell};
|
||||
use std::io;
|
||||
|
||||
fn build_cli() -> App<'static> {
|
||||
App::new("value_hints")
|
||||
// AppSettings::TrailingVarArg is required to use ValueHint::CommandWithArguments
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.trailing_var_arg(true)
|
||||
.arg(
|
||||
Arg::new("generator")
|
||||
.long("generate")
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
//! . ./value_hints_derive.fish
|
||||
//! ./target/debug/examples/value_hints_derive --<TAB>
|
||||
//! ```
|
||||
use clap::{App, AppSettings, IntoApp, Parser, ValueHint};
|
||||
use clap::{App, IntoApp, Parser, ValueHint};
|
||||
use clap_complete::{generate, Generator, Shell};
|
||||
use std::ffi::OsString;
|
||||
use std::io;
|
||||
|
@ -21,8 +21,8 @@ use std::path::PathBuf;
|
|||
#[derive(Parser, Debug, PartialEq)]
|
||||
#[clap(
|
||||
name = "value_hints_derive",
|
||||
// AppSettings::TrailingVarArg is required to use ValueHint::CommandWithArguments
|
||||
setting = AppSettings::TrailingVarArg,
|
||||
// App::trailing_var_ar is required to use ValueHint::CommandWithArguments
|
||||
trailing_var_arg = true,
|
||||
)]
|
||||
struct Opt {
|
||||
/// If provided, outputs the completion file for given shell
|
||||
|
|
|
@ -7,7 +7,7 @@ fn build_app() -> App<'static> {
|
|||
fn build_app_with_name(s: &'static str) -> App<'static> {
|
||||
App::new(s)
|
||||
.version("3.0")
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.about("Tests completions")
|
||||
.arg(
|
||||
Arg::new("file")
|
||||
|
|
|
@ -7,7 +7,7 @@ fn build_app() -> App<'static> {
|
|||
fn build_app_with_name(s: &'static str) -> App<'static> {
|
||||
App::new(s)
|
||||
.version("3.0")
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.about("Tests completions")
|
||||
.arg(
|
||||
Arg::new("file")
|
||||
|
|
|
@ -7,7 +7,7 @@ fn build_app() -> App<'static> {
|
|||
fn build_app_with_name(s: &'static str) -> App<'static> {
|
||||
App::new(s)
|
||||
.version("3.0")
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.about("Tests completions")
|
||||
.arg(
|
||||
Arg::new("file")
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use clap::{App, AppSettings, Arg, ValueHint};
|
||||
use clap::{App, Arg, ValueHint};
|
||||
use clap_complete::{generate, shells::*, Generator};
|
||||
use std::fmt;
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ fn build_app() -> App<'static> {
|
|||
fn build_app_with_name(s: &'static str) -> App<'static> {
|
||||
App::new(s)
|
||||
.version("3.0")
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.about("Tests completions")
|
||||
.arg(
|
||||
Arg::new("file")
|
||||
|
|
|
@ -7,7 +7,7 @@ fn build_app() -> App<'static> {
|
|||
fn build_app_with_name(s: &'static str) -> App<'static> {
|
||||
App::new(s)
|
||||
.version("3.0")
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.about("Test test's completions")
|
||||
.arg(
|
||||
Arg::new("file")
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
mod completions;
|
||||
|
||||
use clap::{App, AppSettings, Arg, ValueHint};
|
||||
use clap::{App, Arg, ValueHint};
|
||||
|
||||
use clap_complete::shells::*;
|
||||
use completions::common;
|
||||
|
||||
pub fn build_app_with_value_hints() -> App<'static> {
|
||||
App::new("my_app")
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.trailing_var_arg(true)
|
||||
.arg(
|
||||
Arg::new("choice")
|
||||
.long("choice")
|
||||
|
|
|
@ -8,7 +8,7 @@ fn build_app() -> App<'static> {
|
|||
fn build_app_with_name(s: &'static str) -> App<'static> {
|
||||
App::new(s)
|
||||
.version("3.0")
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.about("Tests completions")
|
||||
.arg(
|
||||
Arg::new("file")
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use clap::{App, AppSettings, Arg, ValueHint};
|
||||
use clap::{App, Arg, ValueHint};
|
||||
use clap_complete::{generate, Generator};
|
||||
use std::fmt;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use clap::{App, AppSettings, Arg, ValueHint};
|
||||
use clap::{App, Arg, ValueHint};
|
||||
use clap_complete_fig::Fig;
|
||||
use completions::common;
|
||||
|
||||
|
@ -6,8 +6,8 @@ mod completions;
|
|||
|
||||
pub fn build_app_with_value_hints() -> App<'static> {
|
||||
App::new("my_app")
|
||||
.setting(AppSettings::DisableVersionFlag)
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.disable_version_flag(true)
|
||||
.trailing_var_arg(true)
|
||||
.arg(
|
||||
Arg::new("choice")
|
||||
.long("choice")
|
||||
|
|
|
@ -165,11 +165,11 @@ fn gen_augment(
|
|||
Some(subty) => {
|
||||
if is_simple_ty(subty, "OsString") {
|
||||
quote_spanned! { kind.span()=>
|
||||
let #app_var = #app_var.setting(clap::AppSettings::AllowExternalSubcommands).setting(clap::AppSettings::AllowInvalidUtf8ForExternalSubcommands);
|
||||
let #app_var = #app_var.allow_external_subcommands(true).allow_invalid_utf8_for_external_subcommands(true);
|
||||
}
|
||||
} else {
|
||||
quote_spanned! { kind.span()=>
|
||||
let #app_var = #app_var.setting(clap::AppSettings::AllowExternalSubcommands);
|
||||
let #app_var = #app_var.allow_external_subcommands(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -264,6 +264,5 @@ fn app_has_arguments(app: &clap::App) -> bool {
|
|||
|
||||
// Does the application have any subcommands?
|
||||
fn app_has_subcommands(app: &clap::App) -> bool {
|
||||
app.get_subcommands()
|
||||
.any(|i| !i.is_set(clap::AppSettings::Hidden))
|
||||
app.get_subcommands().any(|i| !i.is_hide_set())
|
||||
}
|
||||
|
|
|
@ -144,10 +144,7 @@ pub(crate) fn options(roff: &mut Roff, app: &clap::App) {
|
|||
}
|
||||
|
||||
pub(crate) fn subcommands(roff: &mut Roff, app: &clap::App, section: &str) {
|
||||
for sub in app
|
||||
.get_subcommands()
|
||||
.filter(|s| !s.is_set(AppSettings::Hidden))
|
||||
{
|
||||
for sub in app.get_subcommands().filter(|s| !s.is_hide_set()) {
|
||||
roff.control("TP", []);
|
||||
|
||||
let name = format!("{}-{}({})", app.get_name(), sub.get_name(), section);
|
||||
|
@ -179,10 +176,7 @@ pub(crate) fn after_help(roff: &mut Roff, app: &clap::App) {
|
|||
}
|
||||
|
||||
fn subcommand_markers(cmd: &clap::App) -> (&'static str, &'static str) {
|
||||
markers(
|
||||
cmd.is_set(AppSettings::SubcommandRequired)
|
||||
|| cmd.is_set(AppSettings::SubcommandRequiredElseHelp),
|
||||
)
|
||||
markers(cmd.is_subcommand_required_set() || cmd.is_set(AppSettings::SubcommandRequiredElseHelp))
|
||||
}
|
||||
|
||||
fn option_markers(opt: &clap::Arg) -> (&'static str, &'static str) {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
fn main() {
|
||||
let app = clap::App::new("cargo")
|
||||
.bin_name("cargo")
|
||||
.setting(clap::AppSettings::SubcommandRequired)
|
||||
.subcommand_required(true)
|
||||
.subcommand(
|
||||
clap::app_from_crate!().name("example").arg(
|
||||
clap::arg!(--"manifest-path" <PATH>)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
use std::ffi::OsString;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use clap::{AppSettings, Parser, Subcommand};
|
||||
use clap::{Parser, Subcommand};
|
||||
|
||||
/// A fictional versioning CLI
|
||||
#[derive(Parser)]
|
||||
|
@ -17,19 +17,19 @@ struct Cli {
|
|||
#[derive(Subcommand)]
|
||||
enum Commands {
|
||||
/// Clones repos
|
||||
#[clap(setting(AppSettings::ArgRequiredElseHelp))]
|
||||
#[clap(arg_required_else_help = true)]
|
||||
Clone {
|
||||
/// The remote to clone
|
||||
remote: String,
|
||||
},
|
||||
/// pushes things
|
||||
#[clap(setting(AppSettings::ArgRequiredElseHelp))]
|
||||
#[clap(arg_required_else_help = true)]
|
||||
Push {
|
||||
/// The remote to target
|
||||
remote: String,
|
||||
},
|
||||
/// adds things
|
||||
#[clap(setting(AppSettings::ArgRequiredElseHelp))]
|
||||
#[clap(arg_required_else_help = true)]
|
||||
Add {
|
||||
/// Stuff to add
|
||||
#[clap(required = true, parse(from_os_str))]
|
||||
|
|
|
@ -8,24 +8,24 @@ fn main() {
|
|||
let matches = App::new("git")
|
||||
.about("A fictional versioning CLI")
|
||||
.setting(AppSettings::SubcommandRequiredElseHelp)
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.setting(AppSettings::AllowInvalidUtf8ForExternalSubcommands)
|
||||
.allow_external_subcommands(true)
|
||||
.allow_invalid_utf8_for_external_subcommands(true)
|
||||
.subcommand(
|
||||
App::new("clone")
|
||||
.about("Clones repos")
|
||||
.arg(arg!(<REMOTE> "The remote to clone"))
|
||||
.setting(AppSettings::ArgRequiredElseHelp),
|
||||
.arg_required_else_help(true),
|
||||
)
|
||||
.subcommand(
|
||||
App::new("push")
|
||||
.about("pushes things")
|
||||
.arg(arg!(<REMOTE> "The remote to target"))
|
||||
.setting(AppSettings::ArgRequiredElseHelp),
|
||||
.arg_required_else_help(true),
|
||||
)
|
||||
.subcommand(
|
||||
App::new("add")
|
||||
.about("adds things")
|
||||
.setting(AppSettings::ArgRequiredElseHelp)
|
||||
.arg_required_else_help(true)
|
||||
.arg(arg!(<PATH> ... "Stuff to add").allow_invalid_utf8(true)),
|
||||
)
|
||||
.get_matches();
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
use std::process::exit;
|
||||
|
||||
use clap::{App, AppSettings, Arg};
|
||||
use clap::{App, Arg};
|
||||
|
||||
fn applet_commands() -> [App<'static>; 2] {
|
||||
[
|
||||
|
@ -13,10 +13,10 @@ fn applet_commands() -> [App<'static>; 2] {
|
|||
|
||||
fn main() {
|
||||
let app = App::new(env!("CARGO_CRATE_NAME"))
|
||||
.setting(AppSettings::Multicall)
|
||||
.multicall(true)
|
||||
.subcommand(
|
||||
App::new("busybox")
|
||||
.setting(AppSettings::ArgRequiredElseHelp)
|
||||
.arg_required_else_help(true)
|
||||
.subcommand_value_name("APPLET")
|
||||
.subcommand_help_heading("APPLETS")
|
||||
.arg(
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
// Note: this requires the `unstable-multicall` feature
|
||||
|
||||
use clap::{App, AppSettings};
|
||||
use clap::App;
|
||||
|
||||
fn main() {
|
||||
let app = App::new(env!("CARGO_CRATE_NAME"))
|
||||
.setting(AppSettings::ArgRequiredElseHelp)
|
||||
.arg_required_else_help(true)
|
||||
.subcommand_value_name("APPLET")
|
||||
.subcommand_help_heading("APPLETS")
|
||||
.subcommand(App::new("hostname").about("show hostname part of FQDN"))
|
||||
.subcommand(App::new("dnsdomainname").about("show domain name part of FQDN"));
|
||||
|
||||
let app = app.setting(AppSettings::Multicall);
|
||||
let app = app.multicall(true);
|
||||
|
||||
match app.get_matches().subcommand_name() {
|
||||
Some("hostname") => println!("www"),
|
||||
|
|
|
@ -2,9 +2,9 @@ use clap::{app_from_crate, arg, AppSettings};
|
|||
|
||||
fn main() {
|
||||
let matches = app_from_crate!()
|
||||
.global_setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.global_setting(AppSettings::DeriveDisplayOrder)
|
||||
.global_setting(AppSettings::AllowNegativeNumbers)
|
||||
.allow_negative_numbers(true)
|
||||
.arg(arg!(--two <VALUE>))
|
||||
.arg(arg!(--one <VALUE>))
|
||||
.get_matches();
|
||||
|
|
|
@ -2,7 +2,7 @@ use clap::{app_from_crate, arg, App, AppSettings};
|
|||
|
||||
fn main() {
|
||||
let matches = app_from_crate!()
|
||||
.global_setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.global_setting(AppSettings::UseLongFormatForHelpSubcommand)
|
||||
.setting(AppSettings::SubcommandRequiredElseHelp)
|
||||
.subcommand(
|
||||
|
|
|
@ -326,7 +326,7 @@ SUBCOMMANDS:
|
|||
|
||||
```
|
||||
|
||||
Because we set `AppSettings::PropagateVersion`:
|
||||
Because we set `App::propagate_version`:
|
||||
```console
|
||||
$ 03_04_subcommands --version
|
||||
clap [..]
|
||||
|
|
|
@ -2,9 +2,9 @@ use clap::{AppSettings, Parser};
|
|||
|
||||
#[derive(Parser)]
|
||||
#[clap(author, version, about, long_about = None)]
|
||||
#[clap(global_setting(AppSettings::AllArgsOverrideSelf))]
|
||||
#[clap(args_override_self = true)]
|
||||
#[clap(allow_negative_numbers = true)]
|
||||
#[clap(global_setting(AppSettings::DeriveDisplayOrder))]
|
||||
#[clap(global_setting(AppSettings::AllowNegativeNumbers))]
|
||||
struct Cli {
|
||||
#[clap(long)]
|
||||
two: String,
|
||||
|
|
|
@ -2,7 +2,7 @@ use clap::{AppSettings, Parser, Subcommand};
|
|||
|
||||
#[derive(Parser)]
|
||||
#[clap(author, version, about, long_about = None)]
|
||||
#[clap(global_setting(AppSettings::PropagateVersion))]
|
||||
#[clap(propagate_version = true)]
|
||||
#[clap(global_setting(AppSettings::UseLongFormatForHelpSubcommand))]
|
||||
struct Cli {
|
||||
#[clap(subcommand)]
|
||||
|
|
|
@ -328,7 +328,7 @@ SUBCOMMANDS:
|
|||
|
||||
```
|
||||
|
||||
Because we set `AppSettings::PropagateVersion`:
|
||||
Because we set `App::propagate_version`:
|
||||
```console
|
||||
$ 03_04_subcommands_derive --version
|
||||
clap [..]
|
||||
|
|
1322
src/build/app.rs
1322
src/build/app.rs
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,9 +1,9 @@
|
|||
use crate::{App, AppSettings};
|
||||
use crate::App;
|
||||
|
||||
#[test]
|
||||
fn propagate_version() {
|
||||
let mut app = App::new("test")
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.version("1.1")
|
||||
.subcommand(App::new("sub1"));
|
||||
app._propagate();
|
||||
|
@ -13,7 +13,7 @@ fn propagate_version() {
|
|||
#[test]
|
||||
fn global_setting() {
|
||||
let mut app = App::new("test")
|
||||
.global_setting(AppSettings::AllowHyphenValues)
|
||||
.disable_version_flag(true)
|
||||
.subcommand(App::new("subcmd"));
|
||||
app._propagate();
|
||||
assert!(app
|
||||
|
@ -21,28 +21,7 @@ fn global_setting() {
|
|||
.iter()
|
||||
.find(|s| s.name == "subcmd")
|
||||
.unwrap()
|
||||
.is_set(AppSettings::AllowHyphenValues));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn global_settings() {
|
||||
let mut app = App::new("test")
|
||||
.global_setting(AppSettings::AllowHyphenValues)
|
||||
.global_setting(AppSettings::TrailingVarArg)
|
||||
.subcommand(App::new("subcmd"));
|
||||
app._propagate();
|
||||
assert!(app
|
||||
.subcommands
|
||||
.iter()
|
||||
.find(|s| s.name == "subcmd")
|
||||
.unwrap()
|
||||
.is_set(AppSettings::AllowHyphenValues));
|
||||
assert!(app
|
||||
.subcommands
|
||||
.iter()
|
||||
.find(|s| s.name == "subcmd")
|
||||
.unwrap()
|
||||
.is_set(AppSettings::TrailingVarArg));
|
||||
.is_disable_version_flag_set());
|
||||
}
|
||||
|
||||
// This test will *fail to compile* if App is not Send + Sync
|
||||
|
@ -55,9 +34,9 @@ fn app_send_sync() {
|
|||
#[test]
|
||||
fn issue_2090() {
|
||||
let mut app = App::new("app")
|
||||
.global_setting(AppSettings::DisableVersionFlag)
|
||||
.disable_version_flag(true)
|
||||
.subcommand(App::new("sub"));
|
||||
app._build();
|
||||
|
||||
assert!(app.subcommands[0].is_set(AppSettings::DisableVersionFlag));
|
||||
assert!(app.subcommands[0].is_disable_version_flag_set());
|
||||
}
|
||||
|
|
|
@ -472,7 +472,7 @@ impl<'help> Arg<'help> {
|
|||
/// **NOTE:** This will change the usage string to look like `$ prog [OPTIONS] [-- <ARG>]` if
|
||||
/// `ARG` is marked as `.last(true)`.
|
||||
///
|
||||
/// **NOTE:** This setting will imply [`crate::AppSettings::DontCollapseArgsInUsage`] because failing
|
||||
/// **NOTE:** This setting will imply [`crate::App::dont_collapse_args_in_usage`] because failing
|
||||
/// to set this can make the usage string very confusing.
|
||||
///
|
||||
/// **NOTE**: This setting only applies to positional arguments, and has no effect on OPTIONS
|
||||
|
|
|
@ -15,7 +15,7 @@ pub(crate) fn assert_app(app: &App) {
|
|||
if app.version.is_none() && app.long_version.is_none() {
|
||||
// PropagateVersion is meaningless if there is no version
|
||||
assert!(
|
||||
!app.settings.is_set(AppSettings::PropagateVersion),
|
||||
!app.is_propagate_version_set(),
|
||||
"App {}: No version information via App::version or App::long_version to propagate",
|
||||
app.get_name(),
|
||||
);
|
||||
|
@ -215,7 +215,7 @@ pub(crate) fn assert_app(app: &App) {
|
|||
);
|
||||
|
||||
assert!(
|
||||
app.is_set(AppSettings::TrailingVarArg),
|
||||
app.is_trailing_var_arg_set(),
|
||||
"App {}: Positional argument '{}' has hint CommandWithArguments, so App must have TrailingVarArg set.",
|
||||
app.get_name(),
|
||||
arg.name
|
||||
|
@ -291,7 +291,7 @@ pub(crate) fn assert_app(app: &App) {
|
|||
);
|
||||
}
|
||||
|
||||
app._panic_on_missing_help(app.g_settings.is_set(AppSettings::HelpExpected));
|
||||
app._panic_on_missing_help(app.is_help_expected_set());
|
||||
assert_app_flags(app);
|
||||
}
|
||||
|
||||
|
@ -373,15 +373,13 @@ fn find_duplicates<T: PartialEq>(slice: &[T]) -> impl Iterator<Item = (&T, &T)>
|
|||
}
|
||||
|
||||
fn assert_app_flags(app: &App) {
|
||||
use AppSettings::*;
|
||||
|
||||
macro_rules! checker {
|
||||
($a:ident requires $($b:ident)|+) => {
|
||||
if app.is_set($a) {
|
||||
if app.$a() {
|
||||
let mut s = String::new();
|
||||
|
||||
$(
|
||||
if !app.is_set($b) {
|
||||
if !app.$b() {
|
||||
s.push_str(&format!(" AppSettings::{} is required when AppSettings::{} is set.\n", std::stringify!($b), std::stringify!($a)));
|
||||
}
|
||||
)+
|
||||
|
@ -392,11 +390,11 @@ fn assert_app_flags(app: &App) {
|
|||
}
|
||||
};
|
||||
($a:ident conflicts $($b:ident)|+) => {
|
||||
if app.is_set($a) {
|
||||
if app.$a() {
|
||||
let mut s = String::new();
|
||||
|
||||
$(
|
||||
if app.is_set($b) {
|
||||
if app.$b() {
|
||||
s.push_str(&format!(" AppSettings::{} conflicts with AppSettings::{}.\n", std::stringify!($b), std::stringify!($a)));
|
||||
}
|
||||
)+
|
||||
|
@ -408,9 +406,9 @@ fn assert_app_flags(app: &App) {
|
|||
};
|
||||
}
|
||||
|
||||
checker!(AllowInvalidUtf8ForExternalSubcommands requires AllowExternalSubcommands);
|
||||
checker!(is_allow_invalid_utf8_for_external_subcommands_set requires is_allow_external_subcommands_set);
|
||||
#[cfg(feature = "unstable-multicall")]
|
||||
checker!(Multicall conflicts NoBinaryName);
|
||||
checker!(is_multicall_set conflicts is_no_binary_name_set);
|
||||
}
|
||||
|
||||
#[cfg(debug_assertions)]
|
||||
|
@ -502,7 +500,7 @@ fn _verify_positionals(app: &App) -> bool {
|
|||
|
||||
let mut found = false;
|
||||
|
||||
if app.is_set(AppSettings::AllowMissingPositional) {
|
||||
if app.is_allow_missing_positional_set() {
|
||||
// Check that if a required positional argument is found, all positions with a lower
|
||||
// index are also required.
|
||||
let mut foundx2 = false;
|
||||
|
@ -566,7 +564,7 @@ fn _verify_positionals(app: &App) -> bool {
|
|||
.get_positionals()
|
||||
.any(|p| p.is_last_set() && p.is_required_set())
|
||||
&& app.has_subcommands()
|
||||
&& !app.is_set(AppSettings::SubcommandsNegateReqs)
|
||||
&& !app.is_subcommand_negates_reqs_set()
|
||||
{
|
||||
panic!(
|
||||
"Having a required positional argument with .last(true) set *and* child \
|
||||
|
|
|
@ -9,7 +9,7 @@ use std::{
|
|||
|
||||
// Internal
|
||||
use crate::{
|
||||
build::{arg::display_arg_val, App, AppSettings, Arg},
|
||||
build::{arg::display_arg_val, App, Arg},
|
||||
output::{fmt::Colorizer, Usage},
|
||||
};
|
||||
|
||||
|
@ -25,7 +25,6 @@ pub(crate) struct Help<'help, 'app, 'writer> {
|
|||
app: &'app App<'help>,
|
||||
usage: &'app Usage<'help, 'app>,
|
||||
next_line_help: bool,
|
||||
hide_pv: bool,
|
||||
term_w: usize,
|
||||
use_long: bool,
|
||||
}
|
||||
|
@ -65,15 +64,13 @@ impl<'help, 'app, 'writer> Help<'help, 'app, 'writer> {
|
|||
},
|
||||
),
|
||||
};
|
||||
let next_line_help = app.is_set(AppSettings::NextLineHelp);
|
||||
let hide_pv = app.is_set(AppSettings::HidePossibleValues);
|
||||
let next_line_help = app.is_next_line_help_set();
|
||||
|
||||
Help {
|
||||
writer,
|
||||
app,
|
||||
usage,
|
||||
next_line_help,
|
||||
hide_pv,
|
||||
term_w,
|
||||
use_long,
|
||||
}
|
||||
|
@ -571,7 +568,7 @@ impl<'help, 'app, 'writer> Help<'help, 'app, 'writer> {
|
|||
}
|
||||
}
|
||||
|
||||
if !self.hide_pv && !a.is_hide_possible_values_set() && !a.possible_vals.is_empty() {
|
||||
if !a.is_hide_possible_values_set() && !a.possible_vals.is_empty() {
|
||||
debug!(
|
||||
"Help::spec_vals: Found possible vals...{:?}",
|
||||
a.possible_vals
|
||||
|
@ -1005,7 +1002,7 @@ fn should_show_arg(use_long: bool, arg: &Arg) -> bool {
|
|||
}
|
||||
|
||||
fn should_show_subcommand(subcommand: &App) -> bool {
|
||||
!subcommand.is_set(AppSettings::Hidden)
|
||||
!subcommand.is_hide_set()
|
||||
}
|
||||
|
||||
fn text_wrapper(help: &str, width: usize) -> String {
|
||||
|
|
|
@ -64,7 +64,7 @@ impl<'help, 'app> Usage<'help, 'app> {
|
|||
usage.push_str(" [OPTIONS]");
|
||||
}
|
||||
|
||||
let allow_missing_positional = self.app.is_set(AS::AllowMissingPositional);
|
||||
let allow_missing_positional = self.app.is_allow_missing_positional_set();
|
||||
if !allow_missing_positional {
|
||||
usage.push_str(&req_string);
|
||||
}
|
||||
|
@ -77,8 +77,7 @@ impl<'help, 'app> Usage<'help, 'app> {
|
|||
.get_non_positionals()
|
||||
.any(|o| o.is_multiple_values_set())
|
||||
&& self.app.get_positionals().any(|p| !p.is_required_set())
|
||||
&& !(self.app.has_visible_subcommands()
|
||||
|| self.app.is_set(AS::AllowExternalSubcommands))
|
||||
&& !(self.app.has_visible_subcommands() || self.app.is_allow_external_subcommands_set())
|
||||
&& !has_last
|
||||
{
|
||||
usage.push_str(" [--]");
|
||||
|
@ -121,14 +120,14 @@ impl<'help, 'app> Usage<'help, 'app> {
|
|||
|
||||
// incl_reqs is only false when this function is called recursively
|
||||
if self.app.has_visible_subcommands() && incl_reqs
|
||||
|| self.app.is_set(AS::AllowExternalSubcommands)
|
||||
|| self.app.is_allow_external_subcommands_set()
|
||||
{
|
||||
let placeholder = self.app.subcommand_value_name.unwrap_or("SUBCOMMAND");
|
||||
if self.app.is_set(AS::SubcommandsNegateReqs)
|
||||
|| self.app.is_set(AS::ArgsNegateSubcommands)
|
||||
if self.app.is_subcommand_negates_reqs_set()
|
||||
|| self.app.is_args_conflicts_with_subcommands_set()
|
||||
{
|
||||
usage.push_str("\n ");
|
||||
if !self.app.is_set(AS::ArgsNegateSubcommands) {
|
||||
if !self.app.is_args_conflicts_with_subcommands_set() {
|
||||
usage.push_str(&*self.create_help_usage(false));
|
||||
} else {
|
||||
usage.push_str(&*name);
|
||||
|
@ -136,7 +135,7 @@ impl<'help, 'app> Usage<'help, 'app> {
|
|||
usage.push_str(" <");
|
||||
usage.push_str(placeholder);
|
||||
usage.push('>');
|
||||
} else if self.app.is_set(AS::SubcommandRequired)
|
||||
} else if self.app.is_subcommand_required_set()
|
||||
|| self.app.is_set(AS::SubcommandRequiredElseHelp)
|
||||
{
|
||||
usage.push_str(" <");
|
||||
|
@ -173,7 +172,7 @@ impl<'help, 'app> Usage<'help, 'app> {
|
|||
.unwrap_or(&self.app.name)[..],
|
||||
);
|
||||
usage.push_str(&*r_string);
|
||||
if self.app.is_set(AS::SubcommandRequired) {
|
||||
if self.app.is_subcommand_required_set() {
|
||||
usage.push_str(" <");
|
||||
usage.push_str(self.app.subcommand_value_name.unwrap_or("SUBCOMMAND"));
|
||||
usage.push('>');
|
||||
|
@ -211,7 +210,7 @@ impl<'help, 'app> Usage<'help, 'app> {
|
|||
}
|
||||
}
|
||||
|
||||
if !self.app.is_set(AS::DontCollapseArgsInUsage) && count > 1 {
|
||||
if !self.app.is_dont_collapse_args_in_usage_set() && count > 1 {
|
||||
debug!("Usage::get_args_tag:iter: More than one, returning [ARGS]");
|
||||
|
||||
// [ARGS]
|
||||
|
@ -245,7 +244,7 @@ impl<'help, 'app> Usage<'help, 'app> {
|
|||
pos.name_no_brackets(),
|
||||
pos.multiple_str()
|
||||
))
|
||||
} else if self.app.is_set(AS::DontCollapseArgsInUsage)
|
||||
} else if self.app.is_dont_collapse_args_in_usage_set()
|
||||
&& self.app.has_positionals()
|
||||
&& incl_reqs
|
||||
{
|
||||
|
|
|
@ -30,7 +30,7 @@ impl ArgMatcher {
|
|||
//
|
||||
// See clap-rs/clap#3263
|
||||
#[cfg(debug_assertions)]
|
||||
disable_asserts: _app.is_set(crate::AppSettings::AllowExternalSubcommands),
|
||||
disable_asserts: _app.is_allow_external_subcommands_set(),
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
|
|
|
@ -64,7 +64,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
// Should we color the help?
|
||||
pub(crate) fn color_help(&self) -> ColorChoice {
|
||||
#[cfg(feature = "color")]
|
||||
if self.is_set(AS::DisableColoredHelp) {
|
||||
if self.app.is_disable_colored_help_set() {
|
||||
return ColorChoice::Never;
|
||||
}
|
||||
|
||||
|
@ -139,7 +139,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
.last()
|
||||
.map_or(false, |p_name| !p_name.is_last_set());
|
||||
|
||||
let missing_pos = self.is_set(AS::AllowMissingPositional)
|
||||
let missing_pos = self.app.is_allow_missing_positional_set()
|
||||
&& is_second_to_last
|
||||
&& !trailing_values;
|
||||
|
||||
|
@ -181,7 +181,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
pos_counter
|
||||
}
|
||||
} else if trailing_values
|
||||
&& (self.is_set(AS::AllowMissingPositional) || contains_last)
|
||||
&& (self.app.is_allow_missing_positional_set() || contains_last)
|
||||
{
|
||||
// Came to -- and one positional has .last(true) set, so we go immediately
|
||||
// to the last (highest index) positional
|
||||
|
@ -194,7 +194,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
|
||||
// Has the user already passed '--'? Meaning only positional args follow
|
||||
if !trailing_values {
|
||||
if self.is_set(AS::SubcommandPrecedenceOverArg)
|
||||
if self.app.is_subcommand_precedence_over_arg_set()
|
||||
|| !matches!(parse_state, ParseState::Opt(_) | ParseState::Pos(_))
|
||||
{
|
||||
// Does the arg match a subcommand name, or any of its aliases (if defined)
|
||||
|
@ -203,7 +203,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
if let Some(sc_name) = sc_name {
|
||||
if sc_name == "help"
|
||||
&& !self.is_set(AS::NoAutoHelp)
|
||||
&& !self.is_set(AS::DisableHelpSubcommand)
|
||||
&& !self.app.is_disable_help_subcommand_set()
|
||||
{
|
||||
self.parse_help_subcommand(remaining_args)?;
|
||||
}
|
||||
|
@ -284,7 +284,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
} else if let Some(short_arg) = arg_os.strip_prefix("-") {
|
||||
// Arg looks like a short flag, and not a possible number
|
||||
|
||||
// Try to parse short args like normal, if AllowHyphenValues or
|
||||
// Try to parse short args like normal, if allow_hyphen_values or
|
||||
// AllowNegativeNumbers is set, parse_short_arg will *not* throw
|
||||
// an error, and instead return Ok(None)
|
||||
let parse_result = self.parse_short_arg(
|
||||
|
@ -396,7 +396,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
));
|
||||
}
|
||||
|
||||
if self.is_set(AS::TrailingVarArg) && pos_counter == positional_count {
|
||||
if self.app.is_trailing_var_arg_set() && pos_counter == positional_count {
|
||||
trailing_values = true;
|
||||
}
|
||||
|
||||
|
@ -426,7 +426,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
parse_state = ParseState::Pos(p.id.clone());
|
||||
}
|
||||
valid_arg_found = true;
|
||||
} else if self.is_set(AS::AllowExternalSubcommands) {
|
||||
} else if self.app.is_allow_external_subcommands_set() {
|
||||
// Get external subcommand name
|
||||
let sc_name = match arg_os.to_str() {
|
||||
Some(s) => s.to_string(),
|
||||
|
@ -442,8 +442,9 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
let mut sc_m = ArgMatcher::new(self.app);
|
||||
|
||||
while let Some((v, _)) = it.next() {
|
||||
let allow_invalid_utf8 =
|
||||
self.is_set(AS::AllowInvalidUtf8ForExternalSubcommands);
|
||||
let allow_invalid_utf8 = self
|
||||
.app
|
||||
.is_allow_invalid_utf8_for_external_subcommands_set();
|
||||
if !allow_invalid_utf8 && v.to_str().is_none() {
|
||||
return Err(ClapError::invalid_utf8(
|
||||
self.app,
|
||||
|
@ -487,7 +488,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
.name
|
||||
.clone();
|
||||
self.parse_subcommand(&sc_name, matcher, it, keep_state)?;
|
||||
} else if self.is_set(AS::SubcommandRequired) {
|
||||
} else if self.app.is_subcommand_required_set() {
|
||||
let bn = self.app.bin_name.as_ref().unwrap_or(&self.app.name);
|
||||
return Err(ClapError::missing_subcommand(
|
||||
self.app,
|
||||
|
@ -541,7 +542,8 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
);
|
||||
}
|
||||
// If the argument must be a subcommand.
|
||||
if !self.app.has_args() || self.is_set(AS::InferSubcommands) && self.app.has_subcommands() {
|
||||
if !self.app.has_args() || self.app.is_infer_subcommands_set() && self.app.has_subcommands()
|
||||
{
|
||||
return ClapError::unrecognized_subcommand(
|
||||
self.app,
|
||||
arg_os.to_str_lossy().into_owned(),
|
||||
|
@ -564,8 +566,8 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
fn possible_subcommand(&self, arg_os: &RawOsStr, valid_arg_found: bool) -> Option<&str> {
|
||||
debug!("Parser::possible_subcommand: arg={:?}", arg_os);
|
||||
|
||||
if !(self.is_set(AS::ArgsNegateSubcommands) && valid_arg_found) {
|
||||
if self.is_set(AS::InferSubcommands) {
|
||||
if !(self.app.is_args_conflicts_with_subcommands_set() && valid_arg_found) {
|
||||
if self.app.is_infer_subcommands_set() {
|
||||
// For subcommand `test`, we accepts it's prefix: `t`, `te`,
|
||||
// `tes` and `test`.
|
||||
let v = self
|
||||
|
@ -591,7 +593,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
// Checks if the arg matches a long flag subcommand name, or any of its aliases (if defined)
|
||||
fn possible_long_flag_subcommand(&self, arg_os: &RawOsStr) -> Option<&str> {
|
||||
debug!("Parser::possible_long_flag_subcommand: arg={:?}", arg_os);
|
||||
if self.is_set(AS::InferSubcommands) {
|
||||
if self.app.is_infer_subcommands_set() {
|
||||
let options = self
|
||||
.app
|
||||
.get_subcommands()
|
||||
|
@ -668,9 +670,10 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
next, current_positional.name
|
||||
);
|
||||
|
||||
if self.is_set(AS::AllowHyphenValues)
|
||||
if self.app.is_allow_hyphen_values_set()
|
||||
|| self.app[¤t_positional.id].is_allow_hyphen_values_set()
|
||||
|| (self.is_set(AS::AllowNegativeNumbers) && next.to_str_lossy().parse::<f64>().is_ok())
|
||||
|| (self.app.is_allow_negative_numbers_set()
|
||||
&& next.to_str_lossy().parse::<f64>().is_ok())
|
||||
{
|
||||
// If allow hyphen, this isn't a new arg.
|
||||
debug!("Parser::is_new_arg: Allow hyphen");
|
||||
|
@ -702,7 +705,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
|
||||
let mut mid_string = String::from(" ");
|
||||
|
||||
if !self.is_set(AS::SubcommandsNegateReqs) {
|
||||
if !self.app.is_subcommand_negates_reqs_set() {
|
||||
let reqs =
|
||||
Usage::new(self.app, &self.required).get_required_usage_from(&[], None, true); // maybe Some(m)
|
||||
|
||||
|
@ -712,7 +715,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
}
|
||||
}
|
||||
|
||||
let partial_parsing_enabled = self.is_set(AS::IgnoreErrors);
|
||||
let partial_parsing_enabled = self.app.is_ignore_errors_set();
|
||||
|
||||
if let Some(sc) = self.app.subcommands.iter_mut().find(|s| s.name == sc_name) {
|
||||
// Display subcommand name, short and long in usage
|
||||
|
@ -795,7 +798,8 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
|
||||
if let Some(help) = self.app.find(&Id::help_hash()) {
|
||||
if let Some(h) = help.long {
|
||||
if arg == h && !self.is_set(AS::NoAutoHelp) && !self.is_set(AS::DisableHelpFlag) {
|
||||
if arg == h && !self.is_set(AS::NoAutoHelp) && !self.app.is_disable_help_flag_set()
|
||||
{
|
||||
debug!("Help");
|
||||
return Some(ParseResult::HelpFlag);
|
||||
}
|
||||
|
@ -806,7 +810,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
if let Some(v) = version.long {
|
||||
if arg == v
|
||||
&& !self.is_set(AS::NoAutoVersion)
|
||||
&& !self.is_set(AS::DisableVersionFlag)
|
||||
&& !self.app.is_disable_version_flag_set()
|
||||
{
|
||||
debug!("Version");
|
||||
return Some(ParseResult::VersionFlag);
|
||||
|
@ -827,7 +831,8 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
|
||||
if let Some(help) = self.app.find(&Id::help_hash()) {
|
||||
if let Some(h) = help.short {
|
||||
if arg == h && !self.is_set(AS::NoAutoHelp) && !self.is_set(AS::DisableHelpFlag) {
|
||||
if arg == h && !self.is_set(AS::NoAutoHelp) && !self.app.is_disable_help_flag_set()
|
||||
{
|
||||
debug!("Help");
|
||||
return Some(ParseResult::HelpFlag);
|
||||
}
|
||||
|
@ -838,7 +843,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
if let Some(v) = version.short {
|
||||
if arg == v
|
||||
&& !self.is_set(AS::NoAutoVersion)
|
||||
&& !self.is_set(AS::DisableVersionFlag)
|
||||
&& !self.app.is_disable_version_flag_set()
|
||||
{
|
||||
debug!("Version");
|
||||
return Some(ParseResult::VersionFlag);
|
||||
|
@ -908,7 +913,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
opt.to_string()
|
||||
);
|
||||
Some(opt)
|
||||
} else if self.is_set(AS::InferLongArgs) {
|
||||
} else if self.app.is_infer_long_args_set() {
|
||||
let arg_str = arg.to_str_lossy();
|
||||
self.app.args.args().find(|a| {
|
||||
a.long.map_or(false, |long| long.starts_with(&*arg_str))
|
||||
|
@ -954,7 +959,7 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
}
|
||||
} else if let Some(sc_name) = self.possible_long_flag_subcommand(arg) {
|
||||
ParseResult::FlagSubCommand(sc_name.to_string())
|
||||
} else if self.is_set(AS::AllowHyphenValues) {
|
||||
} else if self.app.is_allow_hyphen_values_set() {
|
||||
ParseResult::MaybeHyphenValue
|
||||
} else {
|
||||
ParseResult::NoMatchingArg {
|
||||
|
@ -977,10 +982,10 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
let arg = short_arg.to_str_lossy();
|
||||
|
||||
#[allow(clippy::blocks_in_if_conditions)]
|
||||
if self.is_set(AS::AllowNegativeNumbers) && arg.parse::<f64>().is_ok() {
|
||||
if self.app.is_allow_negative_numbers_set() && arg.parse::<f64>().is_ok() {
|
||||
debug!("Parser::parse_short_arg: negative number");
|
||||
return ParseResult::MaybeHyphenValue;
|
||||
} else if self.is_set(AS::AllowHyphenValues)
|
||||
} else if self.app.is_allow_hyphen_values_set()
|
||||
&& arg.chars().any(|c| !self.app.contains_short(c))
|
||||
{
|
||||
debug!("Parser::parse_short_args: contains non-short flag");
|
||||
|
@ -1167,9 +1172,9 @@ impl<'help, 'app> Parser<'help, 'app> {
|
|||
debug!(
|
||||
"Parser::add_val_to_arg; trailing_values={:?}, DontDelimTrailingVals={:?}",
|
||||
trailing_values,
|
||||
self.is_set(AS::DontDelimitTrailingValues)
|
||||
self.app.is_dont_delimit_trailing_values_set()
|
||||
);
|
||||
if !(trailing_values && self.is_set(AS::DontDelimitTrailingValues)) {
|
||||
if !(trailing_values && self.app.is_dont_delimit_trailing_values_set()) {
|
||||
if let Some(delim) = arg.val_delim {
|
||||
let terminator = arg.terminator.map(OsStr::new);
|
||||
let vals = val
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Internal
|
||||
use crate::build::{App, AppSettings as AS, Arg, ArgPredicate, PossibleValue};
|
||||
use crate::build::{App, Arg, ArgPredicate, PossibleValue};
|
||||
use crate::error::{Error, Result as ClapResult};
|
||||
use crate::output::Usage;
|
||||
use crate::parse::{ArgMatcher, MatchedArg, ParseState, Parser};
|
||||
|
@ -60,13 +60,13 @@ impl<'help, 'app, 'parser> Validator<'help, 'app, 'parser> {
|
|||
.count();
|
||||
if num_user_values == 0
|
||||
&& matcher.subcommand_name().is_none()
|
||||
&& self.p.is_set(AS::ArgRequiredElseHelp)
|
||||
&& self.p.app.is_arg_required_else_help_set()
|
||||
{
|
||||
let message = self.p.write_help_err()?;
|
||||
return Err(Error::display_help_error(self.p.app, message));
|
||||
}
|
||||
self.validate_conflicts(matcher)?;
|
||||
if !(self.p.is_set(AS::SubcommandsNegateReqs) && is_subcmd || reqs_validated) {
|
||||
if !(self.p.app.is_subcommand_negates_reqs_set() && is_subcmd || reqs_validated) {
|
||||
self.validate_required(matcher)?;
|
||||
}
|
||||
self.validate_matched_args(matcher)?;
|
||||
|
|
|
@ -129,45 +129,41 @@ SUBCOMMANDS:
|
|||
|
||||
#[test]
|
||||
fn setting() {
|
||||
let m = App::new("setting").setting(AppSettings::AllArgsOverrideSelf);
|
||||
#![allow(deprecated)]
|
||||
let m = App::new("setting").args_override_self(true);
|
||||
assert!(m.is_set(AppSettings::AllArgsOverrideSelf));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn global_setting() {
|
||||
let m = App::new("global_setting").global_setting(AppSettings::AllArgsOverrideSelf);
|
||||
#![allow(deprecated)]
|
||||
let m = App::new("global_setting").args_override_self(true);
|
||||
assert!(m.is_set(AppSettings::AllArgsOverrideSelf));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unset_setting() {
|
||||
let m = App::new("unset_setting").setting(AppSettings::AllArgsOverrideSelf);
|
||||
#![allow(deprecated)]
|
||||
let m = App::new("unset_setting").args_override_self(true);
|
||||
assert!(m.is_set(AppSettings::AllArgsOverrideSelf));
|
||||
|
||||
let m = m.unset_setting(AppSettings::AllArgsOverrideSelf);
|
||||
let m = m.args_override_self(false);
|
||||
assert!(!m.is_set(AppSettings::AllArgsOverrideSelf), "{:#?}", m);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unset_global_setting() {
|
||||
let m = App::new("unset_global_setting").global_setting(AppSettings::AllArgsOverrideSelf);
|
||||
#![allow(deprecated)]
|
||||
let m = App::new("unset_global_setting").args_override_self(true);
|
||||
assert!(m.is_set(AppSettings::AllArgsOverrideSelf));
|
||||
|
||||
let m = m.unset_global_setting(AppSettings::AllArgsOverrideSelf);
|
||||
let m = m.args_override_self(false);
|
||||
assert!(!m.is_set(AppSettings::AllArgsOverrideSelf), "{:#?}", m);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unset_on_global_setting() {
|
||||
let m = App::new("unset_on_global_setting").global_setting(AppSettings::AllArgsOverrideSelf);
|
||||
assert!(m.is_set(AppSettings::AllArgsOverrideSelf));
|
||||
|
||||
let m = m.unset_setting(AppSettings::AllArgsOverrideSelf);
|
||||
assert!(m.is_set(AppSettings::AllArgsOverrideSelf), "{:#?}", m);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn setting_bitor() {
|
||||
#![allow(deprecated)]
|
||||
let m = App::new("setting_bitor").setting(
|
||||
AppSettings::InferSubcommands | AppSettings::Hidden | AppSettings::DisableHelpSubcommand,
|
||||
);
|
||||
|
@ -179,6 +175,7 @@ fn setting_bitor() {
|
|||
|
||||
#[test]
|
||||
fn unset_setting_bitor() {
|
||||
#![allow(deprecated)]
|
||||
let m = App::new("unset_setting_bitor")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.setting(AppSettings::Hidden)
|
||||
|
@ -199,7 +196,7 @@ fn unset_setting_bitor() {
|
|||
#[test]
|
||||
fn sub_command_negate_required() {
|
||||
App::new("sub_command_negate")
|
||||
.setting(AppSettings::SubcommandsNegateReqs)
|
||||
.subcommand_negates_reqs(true)
|
||||
.arg(Arg::new("test").required(true).index(1))
|
||||
.subcommand(App::new("sub1"))
|
||||
.try_get_matches_from(vec!["myprog", "sub1"])
|
||||
|
@ -209,7 +206,7 @@ fn sub_command_negate_required() {
|
|||
#[test]
|
||||
fn sub_command_negate_required_2() {
|
||||
let result = App::new("sub_command_negate")
|
||||
.setting(AppSettings::SubcommandsNegateReqs)
|
||||
.subcommand_negates_reqs(true)
|
||||
.arg(Arg::new("test").required(true).index(1))
|
||||
.subcommand(App::new("sub1"))
|
||||
.try_get_matches_from(vec![""]);
|
||||
|
@ -221,7 +218,7 @@ fn sub_command_negate_required_2() {
|
|||
#[test]
|
||||
fn sub_command_required() {
|
||||
let result = App::new("sc_required")
|
||||
.setting(AppSettings::SubcommandRequired)
|
||||
.subcommand_required(true)
|
||||
.subcommand(App::new("sub1"))
|
||||
.try_get_matches_from(vec![""]);
|
||||
assert!(result.is_err());
|
||||
|
@ -232,7 +229,7 @@ fn sub_command_required() {
|
|||
#[test]
|
||||
fn arg_required_else_help() {
|
||||
let result = App::new("arg_required")
|
||||
.setting(AppSettings::ArgRequiredElseHelp)
|
||||
.arg_required_else_help(true)
|
||||
.arg(Arg::new("test").index(1))
|
||||
.try_get_matches_from(vec![""]);
|
||||
|
||||
|
@ -247,7 +244,7 @@ fn arg_required_else_help() {
|
|||
#[test]
|
||||
fn arg_required_else_help_over_reqs() {
|
||||
let result = App::new("arg_required")
|
||||
.setting(AppSettings::ArgRequiredElseHelp)
|
||||
.arg_required_else_help(true)
|
||||
.arg(Arg::new("test").index(1).required(true))
|
||||
.try_get_matches_from(vec![""]);
|
||||
|
||||
|
@ -262,7 +259,7 @@ fn arg_required_else_help_over_reqs() {
|
|||
#[test]
|
||||
fn arg_required_else_help_with_default() {
|
||||
let result = App::new("arg_required")
|
||||
.setting(AppSettings::ArgRequiredElseHelp)
|
||||
.arg_required_else_help(true)
|
||||
.arg(arg!(--input <PATH>).required(false).default_value("-"))
|
||||
.try_get_matches_from(vec![""]);
|
||||
|
||||
|
@ -277,7 +274,7 @@ fn arg_required_else_help_with_default() {
|
|||
#[test]
|
||||
fn arg_required_else_help_error_message() {
|
||||
let app = App::new("test")
|
||||
.setting(AppSettings::ArgRequiredElseHelp)
|
||||
.arg_required_else_help(true)
|
||||
.version("1.0")
|
||||
.arg(
|
||||
Arg::new("info")
|
||||
|
@ -326,7 +323,7 @@ fn subcommand_required_else_help_error_message() {
|
|||
#[test]
|
||||
fn infer_subcommands_fail_no_args() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test"))
|
||||
.subcommand(App::new("temp"))
|
||||
.try_get_matches_from(vec!["prog", "te"]);
|
||||
|
@ -338,7 +335,7 @@ fn infer_subcommands_fail_no_args() {
|
|||
#[test]
|
||||
fn infer_subcommands_fail_no_args() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test"))
|
||||
.subcommand(App::new("temp"))
|
||||
.try_get_matches_from(vec!["prog", "te"]);
|
||||
|
@ -349,7 +346,7 @@ fn infer_subcommands_fail_no_args() {
|
|||
#[test]
|
||||
fn infer_subcommands_fail_with_args() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.arg(Arg::new("some"))
|
||||
.subcommand(App::new("test"))
|
||||
.subcommand(App::new("temp"))
|
||||
|
@ -361,7 +358,7 @@ fn infer_subcommands_fail_with_args() {
|
|||
#[test]
|
||||
fn infer_subcommands_fail_with_args2() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.arg(Arg::new("some"))
|
||||
.subcommand(App::new("test"))
|
||||
.subcommand(App::new("temp"))
|
||||
|
@ -373,7 +370,7 @@ fn infer_subcommands_fail_with_args2() {
|
|||
#[test]
|
||||
fn infer_subcommands_pass() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test"))
|
||||
.try_get_matches_from(vec!["prog", "te"])
|
||||
.unwrap();
|
||||
|
@ -383,7 +380,7 @@ fn infer_subcommands_pass() {
|
|||
#[test]
|
||||
fn infer_subcommands_pass_close() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test"))
|
||||
.subcommand(App::new("temp"))
|
||||
.try_get_matches_from(vec!["prog", "tes"])
|
||||
|
@ -394,7 +391,7 @@ fn infer_subcommands_pass_close() {
|
|||
#[test]
|
||||
fn infer_subcommands_pass_exact_match() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test"))
|
||||
.subcommand(App::new("testa"))
|
||||
.subcommand(App::new("testb"))
|
||||
|
@ -407,7 +404,7 @@ fn infer_subcommands_pass_exact_match() {
|
|||
#[test]
|
||||
fn infer_subcommands_fail_suggestions() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test"))
|
||||
.subcommand(App::new("temp"))
|
||||
.try_get_matches_from(vec!["prog", "temps"]);
|
||||
|
@ -419,7 +416,7 @@ fn infer_subcommands_fail_suggestions() {
|
|||
#[test]
|
||||
fn infer_subcommands_fail_suggestions() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test"))
|
||||
.subcommand(App::new("temp"))
|
||||
.try_get_matches_from(vec!["prog", "temps"]);
|
||||
|
@ -430,7 +427,7 @@ fn infer_subcommands_fail_suggestions() {
|
|||
#[test]
|
||||
fn no_bin_name() {
|
||||
let result = App::new("arg_required")
|
||||
.setting(AppSettings::NoBinaryName)
|
||||
.no_binary_name(true)
|
||||
.arg(Arg::new("test").required(true).index(1))
|
||||
.try_get_matches_from(vec!["testing"]);
|
||||
assert!(result.is_ok(), "{}", result.unwrap_err());
|
||||
|
@ -444,7 +441,7 @@ fn skip_possible_values() {
|
|||
.author("Kevin K.")
|
||||
.about("tests stuff")
|
||||
.version("1.3")
|
||||
.setting(AppSettings::HidePossibleValues)
|
||||
.hide_possible_values(true)
|
||||
.args(&[
|
||||
arg!(-o --opt <opt> "some option")
|
||||
.required(false)
|
||||
|
@ -463,7 +460,7 @@ fn skip_possible_values() {
|
|||
#[test]
|
||||
fn stop_delim_values_only_pos_follows() {
|
||||
let r = App::new("onlypos")
|
||||
.setting(AppSettings::DontDelimitTrailingValues)
|
||||
.dont_delimit_trailing_values(true)
|
||||
.args(&[
|
||||
arg!(f: -f <flag> "some opt").required(false),
|
||||
arg!([arg] ... "some arg"),
|
||||
|
@ -482,8 +479,8 @@ fn stop_delim_values_only_pos_follows() {
|
|||
#[test]
|
||||
fn dont_delim_values_trailingvararg() {
|
||||
let m = App::new("positional")
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.setting(AppSettings::DontDelimitTrailingValues)
|
||||
.trailing_var_arg(true)
|
||||
.dont_delimit_trailing_values(true)
|
||||
.arg(arg!([opt] ... "some pos"))
|
||||
.try_get_matches_from(vec!["", "test", "--foo", "-Wl,-bar"])
|
||||
.unwrap();
|
||||
|
@ -512,7 +509,7 @@ fn delim_values_only_pos_follows() {
|
|||
#[test]
|
||||
fn delim_values_trailingvararg() {
|
||||
let m = App::new("positional")
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.trailing_var_arg(true)
|
||||
.arg(arg!([opt] ... "some pos"))
|
||||
.try_get_matches_from(vec!["", "test", "--foo", "-Wl,-bar"])
|
||||
.unwrap();
|
||||
|
@ -544,7 +541,7 @@ fn delim_values_only_pos_follows_with_delim() {
|
|||
#[test]
|
||||
fn delim_values_trailingvararg_with_delim() {
|
||||
let m = App::new("positional")
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.trailing_var_arg(true)
|
||||
.arg(arg!([opt] ... "some pos").use_value_delimiter(true))
|
||||
.try_get_matches_from(vec!["", "test", "--foo", "-Wl,-bar"])
|
||||
.unwrap();
|
||||
|
@ -558,7 +555,7 @@ fn delim_values_trailingvararg_with_delim() {
|
|||
#[test]
|
||||
fn leading_hyphen_short() {
|
||||
let res = App::new("leadhy")
|
||||
.setting(AppSettings::AllowHyphenValues)
|
||||
.allow_hyphen_values(true)
|
||||
.arg(Arg::new("some"))
|
||||
.arg(Arg::new("other").short('o'))
|
||||
.try_get_matches_from(vec!["", "-bar", "-o"]);
|
||||
|
@ -572,7 +569,7 @@ fn leading_hyphen_short() {
|
|||
#[test]
|
||||
fn leading_hyphen_long() {
|
||||
let res = App::new("leadhy")
|
||||
.setting(AppSettings::AllowHyphenValues)
|
||||
.allow_hyphen_values(true)
|
||||
.arg(Arg::new("some"))
|
||||
.arg(Arg::new("other").short('o'))
|
||||
.try_get_matches_from(vec!["", "--bar", "-o"]);
|
||||
|
@ -586,7 +583,7 @@ fn leading_hyphen_long() {
|
|||
#[test]
|
||||
fn leading_hyphen_opt() {
|
||||
let res = App::new("leadhy")
|
||||
.setting(AppSettings::AllowHyphenValues)
|
||||
.allow_hyphen_values(true)
|
||||
.arg(Arg::new("some").takes_value(true).long("opt"))
|
||||
.arg(Arg::new("other").short('o'))
|
||||
.try_get_matches_from(vec!["", "--opt", "--bar", "-o"]);
|
||||
|
@ -600,7 +597,7 @@ fn leading_hyphen_opt() {
|
|||
#[test]
|
||||
fn allow_negative_numbers() {
|
||||
let res = App::new("negnum")
|
||||
.setting(AppSettings::AllowNegativeNumbers)
|
||||
.allow_negative_numbers(true)
|
||||
.arg(Arg::new("panum"))
|
||||
.arg(Arg::new("onum").short('o').takes_value(true))
|
||||
.try_get_matches_from(vec!["negnum", "-20", "-o", "-1.2"]);
|
||||
|
@ -613,7 +610,7 @@ fn allow_negative_numbers() {
|
|||
#[test]
|
||||
fn allow_negative_numbers_fail() {
|
||||
let res = App::new("negnum")
|
||||
.setting(AppSettings::AllowNegativeNumbers)
|
||||
.allow_negative_numbers(true)
|
||||
.arg(Arg::new("panum"))
|
||||
.arg(Arg::new("onum").short('o').takes_value(true))
|
||||
.try_get_matches_from(vec!["negnum", "--foo", "-o", "-1.2"]);
|
||||
|
@ -624,8 +621,8 @@ fn allow_negative_numbers_fail() {
|
|||
#[test]
|
||||
fn leading_double_hyphen_trailingvararg() {
|
||||
let m = App::new("positional")
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.setting(AppSettings::AllowHyphenValues)
|
||||
.trailing_var_arg(true)
|
||||
.allow_hyphen_values(true)
|
||||
.arg(arg!([opt] ... "some pos"))
|
||||
.try_get_matches_from(vec!["", "--foo", "-Wl", "bar"])
|
||||
.unwrap();
|
||||
|
@ -639,7 +636,7 @@ fn leading_double_hyphen_trailingvararg() {
|
|||
#[test]
|
||||
fn disable_help_subcommand() {
|
||||
let result = App::new("disablehelp")
|
||||
.setting(AppSettings::DisableHelpSubcommand)
|
||||
.disable_help_subcommand(true)
|
||||
.subcommand(App::new("sub1"))
|
||||
.try_get_matches_from(vec!["", "help"]);
|
||||
assert!(result.is_err());
|
||||
|
@ -651,7 +648,7 @@ fn disable_help_subcommand() {
|
|||
fn dont_collapse_args() {
|
||||
let app = App::new("clap-test")
|
||||
.version("v1.4.8")
|
||||
.setting(AppSettings::DontCollapseArgsInUsage)
|
||||
.dont_collapse_args_in_usage(true)
|
||||
.args(&[
|
||||
Arg::new("arg1").help("some"),
|
||||
Arg::new("arg2").help("some"),
|
||||
|
@ -687,8 +684,8 @@ fn require_eq() {
|
|||
#[test]
|
||||
fn args_negate_subcommands_one_level() {
|
||||
let res = App::new("disablehelp")
|
||||
.setting(AppSettings::ArgsNegateSubcommands)
|
||||
.setting(AppSettings::SubcommandsNegateReqs)
|
||||
.args_conflicts_with_subcommands(true)
|
||||
.subcommand_negates_reqs(true)
|
||||
.arg(arg!(<arg1> "some arg"))
|
||||
.arg(arg!(<arg2> "some arg"))
|
||||
.subcommand(App::new("sub1").subcommand(App::new("sub2").subcommand(App::new("sub3"))))
|
||||
|
@ -701,12 +698,14 @@ fn args_negate_subcommands_one_level() {
|
|||
#[test]
|
||||
fn args_negate_subcommands_two_levels() {
|
||||
let res = App::new("disablehelp")
|
||||
.global_setting(AppSettings::ArgsNegateSubcommands)
|
||||
.global_setting(AppSettings::SubcommandsNegateReqs)
|
||||
.args_conflicts_with_subcommands(true)
|
||||
.subcommand_negates_reqs(true)
|
||||
.arg(arg!(<arg1> "some arg"))
|
||||
.arg(arg!(<arg2> "some arg"))
|
||||
.subcommand(
|
||||
App::new("sub1")
|
||||
.args_conflicts_with_subcommands(true)
|
||||
.subcommand_negates_reqs(true)
|
||||
.arg(arg!(<arg> "some"))
|
||||
.arg(arg!(<arg2> "some"))
|
||||
.subcommand(App::new("sub2").subcommand(App::new("sub3"))),
|
||||
|
@ -736,7 +735,7 @@ fn propagate_vals_down() {
|
|||
#[test]
|
||||
fn allow_missing_positional() {
|
||||
let m = App::new("test")
|
||||
.setting(AppSettings::AllowMissingPositional)
|
||||
.allow_missing_positional(true)
|
||||
.arg(arg!([src] "some file").default_value("src"))
|
||||
.arg(arg!(<dest> "some file"))
|
||||
.try_get_matches_from(vec!["test", "file"]);
|
||||
|
@ -749,7 +748,7 @@ fn allow_missing_positional() {
|
|||
#[test]
|
||||
fn allow_missing_positional_no_default() {
|
||||
let m = App::new("test")
|
||||
.setting(AppSettings::AllowMissingPositional)
|
||||
.allow_missing_positional(true)
|
||||
.arg(arg!([src] "some file"))
|
||||
.arg(arg!(<dest> "some file"))
|
||||
.try_get_matches_from(vec!["test", "file"]);
|
||||
|
@ -762,7 +761,7 @@ fn allow_missing_positional_no_default() {
|
|||
#[test]
|
||||
fn missing_positional_no_hyphen() {
|
||||
let r = App::new("bench")
|
||||
.setting(AppSettings::AllowMissingPositional)
|
||||
.allow_missing_positional(true)
|
||||
.arg(arg!([BENCH] "some bench"))
|
||||
.arg(arg!([ARGS] ... "some args"))
|
||||
.try_get_matches_from(vec!["bench", "foo", "arg1", "arg2", "arg3"]);
|
||||
|
@ -783,7 +782,7 @@ fn missing_positional_no_hyphen() {
|
|||
#[test]
|
||||
fn missing_positional_hyphen() {
|
||||
let r = App::new("bench")
|
||||
.setting(AppSettings::AllowMissingPositional)
|
||||
.allow_missing_positional(true)
|
||||
.arg(arg!([BENCH] "some bench"))
|
||||
.arg(arg!([ARGS] ... "some args"))
|
||||
.try_get_matches_from(vec!["bench", "--", "arg1", "arg2", "arg3"]);
|
||||
|
@ -804,7 +803,7 @@ fn missing_positional_hyphen() {
|
|||
#[test]
|
||||
fn missing_positional_hyphen_far_back() {
|
||||
let r = App::new("bench")
|
||||
.setting(AppSettings::AllowMissingPositional)
|
||||
.allow_missing_positional(true)
|
||||
.arg(arg!([BENCH1] "some bench"))
|
||||
.arg(arg!([BENCH2] "some bench"))
|
||||
.arg(arg!([BENCH3] "some bench"))
|
||||
|
@ -831,7 +830,7 @@ fn missing_positional_hyphen_far_back() {
|
|||
#[test]
|
||||
fn missing_positional_hyphen_req_error() {
|
||||
let r = App::new("bench")
|
||||
.setting(AppSettings::AllowMissingPositional)
|
||||
.allow_missing_positional(true)
|
||||
.arg(arg!([BENCH1] "some bench"))
|
||||
.arg(arg!(<BENCH2> "some bench"))
|
||||
.arg(arg!([ARGS] ... "some args"))
|
||||
|
@ -843,7 +842,7 @@ fn missing_positional_hyphen_req_error() {
|
|||
#[test]
|
||||
fn issue_1066_allow_leading_hyphen_and_unknown_args() {
|
||||
let res = App::new("prog")
|
||||
.global_setting(AppSettings::AllowHyphenValues)
|
||||
.allow_hyphen_values(true)
|
||||
.arg(arg!(--"some-argument"))
|
||||
.try_get_matches_from(vec!["prog", "hello"]);
|
||||
|
||||
|
@ -854,7 +853,7 @@ fn issue_1066_allow_leading_hyphen_and_unknown_args() {
|
|||
#[test]
|
||||
fn issue_1066_allow_leading_hyphen_and_unknown_args_no_vals() {
|
||||
let res = App::new("prog")
|
||||
.global_setting(AppSettings::AllowHyphenValues)
|
||||
.allow_hyphen_values(true)
|
||||
.arg(arg!(--"some-argument"))
|
||||
.try_get_matches_from(vec!["prog", "--hello"]);
|
||||
|
||||
|
@ -865,7 +864,7 @@ fn issue_1066_allow_leading_hyphen_and_unknown_args_no_vals() {
|
|||
#[test]
|
||||
fn issue_1066_allow_leading_hyphen_and_unknown_args_option() {
|
||||
let res = App::new("prog")
|
||||
.global_setting(AppSettings::AllowHyphenValues)
|
||||
.allow_hyphen_values(true)
|
||||
.arg(arg!(--"some-argument" <val>))
|
||||
.try_get_matches_from(vec!["prog", "-hello"]);
|
||||
|
||||
|
@ -891,7 +890,7 @@ fn issue_1437_allow_hyphen_values_for_positional_arg() {
|
|||
fn issue_1093_allow_ext_sc() {
|
||||
let app = App::new("clap-test")
|
||||
.version("v1.4.8")
|
||||
.setting(AppSettings::AllowExternalSubcommands);
|
||||
.allow_external_subcommands(true);
|
||||
assert!(utils::compare_output(
|
||||
app,
|
||||
"clap-test --help",
|
||||
|
@ -904,9 +903,9 @@ fn issue_1093_allow_ext_sc() {
|
|||
fn allow_ext_sc_when_sc_required() {
|
||||
let res = App::new("clap-test")
|
||||
.version("v1.4.8")
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.setting(AppSettings::AllowInvalidUtf8ForExternalSubcommands)
|
||||
.setting(AppSettings::SubcommandRequiredElseHelp)
|
||||
.allow_external_subcommands(true)
|
||||
.allow_invalid_utf8_for_external_subcommands(true)
|
||||
.subcommand_required(true)
|
||||
.try_get_matches_from(vec!["clap-test", "external-cmd", "foo"]);
|
||||
|
||||
assert!(res.is_ok(), "{}", res.unwrap_err());
|
||||
|
@ -924,8 +923,8 @@ fn allow_ext_sc_when_sc_required() {
|
|||
fn external_subcommand_looks_like_built_in() {
|
||||
let res = App::new("cargo")
|
||||
.version("1.26.0")
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.setting(AppSettings::AllowInvalidUtf8ForExternalSubcommands)
|
||||
.allow_external_subcommands(true)
|
||||
.allow_invalid_utf8_for_external_subcommands(true)
|
||||
.subcommand(App::new("install"))
|
||||
.try_get_matches_from(vec!["cargo", "install-update", "foo"]);
|
||||
assert!(res.is_ok(), "{}", res.unwrap_err());
|
||||
|
@ -943,7 +942,7 @@ fn external_subcommand_looks_like_built_in() {
|
|||
fn aaos_flags() {
|
||||
// flags
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(arg!(--flag "some flag"))
|
||||
.try_get_matches_from(vec!["", "--flag", "--flag"]);
|
||||
assert!(res.is_ok(), "{}", res.unwrap_err());
|
||||
|
@ -956,7 +955,7 @@ fn aaos_flags() {
|
|||
fn aaos_flags_mult() {
|
||||
// flags with multiple
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(arg!(--flag ... "some flag"))
|
||||
.try_get_matches_from(vec!["", "--flag", "--flag", "--flag", "--flag"]);
|
||||
assert!(res.is_ok(), "{}", res.unwrap_err());
|
||||
|
@ -969,7 +968,7 @@ fn aaos_flags_mult() {
|
|||
fn aaos_opts() {
|
||||
// opts
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(arg!(--opt <val> "some option"))
|
||||
.try_get_matches_from(vec!["", "--opt=some", "--opt=other"]);
|
||||
assert!(res.is_ok(), "{}", res.unwrap_err());
|
||||
|
@ -983,7 +982,7 @@ fn aaos_opts() {
|
|||
fn aaos_opts_w_other_overrides() {
|
||||
// opts with other overrides
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(arg!(--opt <val> "some option").required(false))
|
||||
.arg(
|
||||
arg!(--other <val> "some other option")
|
||||
|
@ -1003,7 +1002,7 @@ fn aaos_opts_w_other_overrides() {
|
|||
fn aaos_opts_w_other_overrides_rev() {
|
||||
// opts with other overrides, rev
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(arg!(--opt <val> "some option").required(true))
|
||||
.arg(
|
||||
arg!(--other <val> "some other option")
|
||||
|
@ -1022,7 +1021,7 @@ fn aaos_opts_w_other_overrides_rev() {
|
|||
fn aaos_opts_w_other_overrides_2() {
|
||||
// opts with other overrides
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(
|
||||
arg!(--opt <val> "some option")
|
||||
.required(false)
|
||||
|
@ -1042,7 +1041,7 @@ fn aaos_opts_w_other_overrides_2() {
|
|||
fn aaos_opts_w_other_overrides_rev_2() {
|
||||
// opts with other overrides, rev
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(
|
||||
arg!(--opt <val> "some option")
|
||||
.required(true)
|
||||
|
@ -1061,7 +1060,7 @@ fn aaos_opts_w_other_overrides_rev_2() {
|
|||
fn aaos_opts_mult() {
|
||||
// opts with multiple
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(
|
||||
arg!(--opt <val> ... "some option")
|
||||
.number_of_values(1)
|
||||
|
@ -1084,7 +1083,7 @@ fn aaos_opts_mult() {
|
|||
fn aaos_opts_mult_req_delims() {
|
||||
// opts with multiple and require delims
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(arg!(--opt <val> ... "some option").multiple_values(true))
|
||||
.try_get_matches_from(vec![
|
||||
"",
|
||||
|
@ -1110,7 +1109,7 @@ fn aaos_opts_mult_req_delims() {
|
|||
fn aaos_pos_mult() {
|
||||
// opts with multiple
|
||||
let res = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(arg!([val] ... "some pos"))
|
||||
.try_get_matches_from(vec!["", "some", "other", "value"]);
|
||||
assert!(res.is_ok(), "{}", res.unwrap_err());
|
||||
|
@ -1126,7 +1125,7 @@ fn aaos_pos_mult() {
|
|||
#[test]
|
||||
fn aaos_option_use_delim_false() {
|
||||
let m = App::new("posix")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(arg!(--opt <val> "some option").use_value_delimiter(false))
|
||||
.try_get_matches_from(vec!["", "--opt=some,other", "--opt=one,two"])
|
||||
.unwrap();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::utils;
|
||||
|
||||
use clap::{arg, error::ErrorKind, App, AppSettings, Arg};
|
||||
use clap::{arg, error::ErrorKind, App, Arg};
|
||||
|
||||
#[test]
|
||||
fn flag_subcommand_normal() {
|
||||
|
@ -395,7 +395,7 @@ fn flag_subcommand_conflict_with_version() {
|
|||
#[test]
|
||||
fn flag_subcommand_long_infer_pass() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test").long_flag("test"))
|
||||
.try_get_matches_from(vec!["prog", "--te"])
|
||||
.unwrap();
|
||||
|
@ -406,7 +406,7 @@ fn flag_subcommand_long_infer_pass() {
|
|||
#[test]
|
||||
fn flag_subcommand_long_infer_fail() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test").long_flag("test"))
|
||||
.subcommand(App::new("temp").long_flag("temp"))
|
||||
.try_get_matches_from(vec!["prog", "--te"]);
|
||||
|
@ -418,7 +418,7 @@ fn flag_subcommand_long_infer_fail() {
|
|||
#[test]
|
||||
fn flag_subcommand_long_infer_fail() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test").long_flag("test"))
|
||||
.subcommand(App::new("temp").long_flag("temp"))
|
||||
.try_get_matches_from(vec!["prog", "--te"]);
|
||||
|
@ -429,7 +429,7 @@ fn flag_subcommand_long_infer_fail() {
|
|||
#[test]
|
||||
fn flag_subcommand_long_infer_pass_close() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test").long_flag("test"))
|
||||
.subcommand(App::new("temp").long_flag("temp"))
|
||||
.try_get_matches_from(vec!["prog", "--tes"])
|
||||
|
@ -440,7 +440,7 @@ fn flag_subcommand_long_infer_pass_close() {
|
|||
#[test]
|
||||
fn flag_subcommand_long_infer_exact_match() {
|
||||
let m = App::new("prog")
|
||||
.setting(AppSettings::InferSubcommands)
|
||||
.infer_subcommands(true)
|
||||
.subcommand(App::new("test").long_flag("test"))
|
||||
.subcommand(App::new("testa").long_flag("testa"))
|
||||
.subcommand(App::new("testb").long_flag("testb"))
|
||||
|
@ -466,7 +466,7 @@ fn flag_subcommand_long_short_normal_usage_string() {
|
|||
let app = App::new("pacman")
|
||||
.about("package manager utility")
|
||||
.version("5.2.1")
|
||||
.setting(AppSettings::SubcommandRequiredElseHelp)
|
||||
.subcommand_required(true)
|
||||
.author("Pacman Development Team")
|
||||
// Query subcommand
|
||||
//
|
||||
|
@ -520,7 +520,7 @@ fn flag_subcommand_long_normal_usage_string() {
|
|||
let app = App::new("pacman")
|
||||
.about("package manager utility")
|
||||
.version("5.2.1")
|
||||
.setting(AppSettings::SubcommandRequiredElseHelp)
|
||||
.subcommand_required(true)
|
||||
.author("Pacman Development Team")
|
||||
// Query subcommand
|
||||
//
|
||||
|
@ -573,7 +573,7 @@ fn flag_subcommand_short_normal_usage_string() {
|
|||
let app = App::new("pacman")
|
||||
.about("package manager utility")
|
||||
.version("5.2.1")
|
||||
.setting(AppSettings::SubcommandRequiredElseHelp)
|
||||
.subcommand_required(true)
|
||||
.author("Pacman Development Team")
|
||||
// Query subcommand
|
||||
//
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#![cfg(feature = "unstable-grouped")]
|
||||
|
||||
use clap::{App, AppSettings, Arg};
|
||||
use clap::{App, Arg};
|
||||
|
||||
#[test]
|
||||
fn grouped_value_works() {
|
||||
|
@ -201,7 +201,7 @@ fn issue_1374() {
|
|||
#[test]
|
||||
fn issue_2171() {
|
||||
let schema = App::new("ripgrep#1701 reproducer")
|
||||
.setting(AppSettings::AllArgsOverrideSelf)
|
||||
.args_override_self(true)
|
||||
.arg(Arg::new("pretty").short('p').long("pretty"))
|
||||
.arg(Arg::new("search_zip").short('z').long("search-zip"));
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::utils;
|
||||
|
||||
use clap::{arg, error::ErrorKind, App, AppSettings, Arg, ArgGroup, PossibleValue};
|
||||
use clap::{arg, error::ErrorKind, App, Arg, ArgGroup, PossibleValue};
|
||||
|
||||
static REQUIRE_DELIM_HELP: &str = "test 1.3
|
||||
Kevin K.
|
||||
|
@ -684,7 +684,7 @@ fn req_last_arg_usage() {
|
|||
fn args_with_last_usage() {
|
||||
let app = App::new("flamegraph")
|
||||
.version("0.1")
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.trailing_var_arg(true)
|
||||
.arg(
|
||||
Arg::new("verbose")
|
||||
.help("Prints out more stuff.")
|
||||
|
@ -1182,7 +1182,7 @@ fn issue_688_hide_pos_vals() {
|
|||
let app1 = App::new("ctest")
|
||||
.version("0.1")
|
||||
.term_width(120)
|
||||
.setting(AppSettings::HidePossibleValues)
|
||||
.hide_possible_values(true)
|
||||
.arg(Arg::new("filter")
|
||||
.help("Sets the filter, or sampling method, to use for interpolation when resizing the particle \
|
||||
images. The default is Linear (Bilinear). [possible values: Nearest, Linear, Cubic, Gaussian, Lanczos3]")
|
||||
|
@ -1383,7 +1383,7 @@ OPTIONS:
|
|||
fn sc_negates_reqs() {
|
||||
let app = App::new("prog")
|
||||
.version("1.0")
|
||||
.setting(AppSettings::SubcommandsNegateReqs)
|
||||
.subcommand_negates_reqs(true)
|
||||
.arg(arg!(-o --opt <FILE> "tests options"))
|
||||
.arg(Arg::new("PATH").help("help"))
|
||||
.subcommand(App::new("test"));
|
||||
|
@ -1414,7 +1414,7 @@ fn hide_args() {
|
|||
fn args_negate_sc() {
|
||||
let app = App::new("prog")
|
||||
.version("1.0")
|
||||
.setting(AppSettings::ArgsNegateSubcommands)
|
||||
.args_conflicts_with_subcommands(true)
|
||||
.arg(arg!(-f --flag "testing flags"))
|
||||
.arg(arg!(-o --opt <FILE> "tests options").required(false))
|
||||
.arg(Arg::new("PATH").help("help"))
|
||||
|
@ -1434,7 +1434,7 @@ fn issue_1046_hide_scs() {
|
|||
.arg(arg!(-f --flag "testing flags"))
|
||||
.arg(arg!(-o --opt <FILE> "tests options").required(false))
|
||||
.arg(Arg::new("PATH").help("some"))
|
||||
.subcommand(App::new("test").setting(AppSettings::Hidden));
|
||||
.subcommand(App::new("test").hide(true));
|
||||
assert!(utils::compare_output(
|
||||
app,
|
||||
"prog --help",
|
||||
|
@ -1607,7 +1607,7 @@ fn last_arg_mult_usage_req() {
|
|||
fn last_arg_mult_usage_req_with_sc() {
|
||||
let app = App::new("last")
|
||||
.version("0.1")
|
||||
.setting(AppSettings::SubcommandsNegateReqs)
|
||||
.subcommand_negates_reqs(true)
|
||||
.arg(Arg::new("TARGET").required(true).help("some"))
|
||||
.arg(Arg::new("CORPUS").help("some"))
|
||||
.arg(
|
||||
|
@ -1631,7 +1631,7 @@ fn last_arg_mult_usage_req_with_sc() {
|
|||
fn last_arg_mult_usage_with_sc() {
|
||||
let app = App::new("last")
|
||||
.version("0.1")
|
||||
.setting(AppSettings::ArgsNegateSubcommands)
|
||||
.args_conflicts_with_subcommands(true)
|
||||
.arg(Arg::new("TARGET").required(true).help("some"))
|
||||
.arg(Arg::new("CORPUS").help("some"))
|
||||
.arg(
|
||||
|
@ -2042,7 +2042,7 @@ fn issue_1487() {
|
|||
#[should_panic = "AppSettings::HelpExpected is enabled for the App"]
|
||||
fn help_required_but_not_given() {
|
||||
App::new("myapp")
|
||||
.setting(AppSettings::HelpExpected)
|
||||
.help_expected(true)
|
||||
.arg(Arg::new("foo"))
|
||||
.try_get_matches_from(empty_args())
|
||||
.unwrap();
|
||||
|
@ -2054,7 +2054,7 @@ fn help_required_but_not_given() {
|
|||
fn help_required_but_not_given_settings_after_args() {
|
||||
App::new("myapp")
|
||||
.arg(Arg::new("foo"))
|
||||
.setting(AppSettings::HelpExpected)
|
||||
.help_expected(true)
|
||||
.try_get_matches_from(empty_args())
|
||||
.unwrap();
|
||||
}
|
||||
|
@ -2064,7 +2064,7 @@ fn help_required_but_not_given_settings_after_args() {
|
|||
#[should_panic = "AppSettings::HelpExpected is enabled for the App"]
|
||||
fn help_required_but_not_given_for_one_of_two_arguments() {
|
||||
App::new("myapp")
|
||||
.setting(AppSettings::HelpExpected)
|
||||
.help_expected(true)
|
||||
.arg(Arg::new("foo"))
|
||||
.arg(Arg::new("bar").help("It does bar stuff"))
|
||||
.try_get_matches_from(empty_args())
|
||||
|
@ -2072,9 +2072,10 @@ fn help_required_but_not_given_for_one_of_two_arguments() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn help_required_locally_but_not_given_for_subcommand() {
|
||||
#[should_panic = "List of such arguments: delete"]
|
||||
fn help_required_globally() {
|
||||
App::new("myapp")
|
||||
.setting(AppSettings::HelpExpected)
|
||||
.help_expected(true)
|
||||
.arg(Arg::new("foo").help("It does foo stuff"))
|
||||
.subcommand(
|
||||
App::new("bar")
|
||||
|
@ -2090,7 +2091,7 @@ fn help_required_locally_but_not_given_for_subcommand() {
|
|||
#[should_panic = "AppSettings::HelpExpected is enabled for the App"]
|
||||
fn help_required_globally_but_not_given_for_subcommand() {
|
||||
App::new("myapp")
|
||||
.global_setting(AppSettings::HelpExpected)
|
||||
.help_expected(true)
|
||||
.arg(Arg::new("foo").help("It does foo stuff"))
|
||||
.subcommand(
|
||||
App::new("bar")
|
||||
|
@ -2104,7 +2105,7 @@ fn help_required_globally_but_not_given_for_subcommand() {
|
|||
#[test]
|
||||
fn help_required_and_given_for_subcommand() {
|
||||
App::new("myapp")
|
||||
.setting(AppSettings::HelpExpected)
|
||||
.help_expected(true)
|
||||
.arg(Arg::new("foo").help("It does foo stuff"))
|
||||
.subcommand(
|
||||
App::new("bar")
|
||||
|
@ -2118,7 +2119,7 @@ fn help_required_and_given_for_subcommand() {
|
|||
#[test]
|
||||
fn help_required_and_given() {
|
||||
App::new("myapp")
|
||||
.setting(AppSettings::HelpExpected)
|
||||
.help_expected(true)
|
||||
.arg(Arg::new("foo").help("It does foo stuff"))
|
||||
.try_get_matches_from(empty_args())
|
||||
.unwrap();
|
||||
|
@ -2127,7 +2128,7 @@ fn help_required_and_given() {
|
|||
#[test]
|
||||
fn help_required_and_no_args() {
|
||||
App::new("myapp")
|
||||
.setting(AppSettings::HelpExpected)
|
||||
.help_expected(true)
|
||||
.try_get_matches_from(empty_args())
|
||||
.unwrap();
|
||||
}
|
||||
|
@ -2155,8 +2156,8 @@ This is after help.
|
|||
fn after_help_no_args() {
|
||||
let mut app = App::new("myapp")
|
||||
.version("1.0")
|
||||
.setting(AppSettings::DisableHelpFlag)
|
||||
.setting(AppSettings::DisableVersionFlag)
|
||||
.disable_help_flag(true)
|
||||
.disable_version_flag(true)
|
||||
.after_help("This is after help.");
|
||||
|
||||
let help = {
|
||||
|
@ -2416,7 +2417,7 @@ NETWORKING:
|
|||
fn only_custom_heading_opts_no_args() {
|
||||
let app = App::new("test")
|
||||
.version("1.4")
|
||||
.setting(AppSettings::DisableVersionFlag)
|
||||
.disable_version_flag(true)
|
||||
.mut_arg("help", |a| a.hide(true))
|
||||
.next_help_heading(Some("NETWORKING"))
|
||||
.arg(arg!(-s --speed <SPEED> "How fast").required(false));
|
||||
|
@ -2442,7 +2443,7 @@ NETWORKING:
|
|||
fn only_custom_heading_pos_no_args() {
|
||||
let app = App::new("test")
|
||||
.version("1.4")
|
||||
.setting(AppSettings::DisableVersionFlag)
|
||||
.disable_version_flag(true)
|
||||
.mut_arg("help", |a| a.hide(true))
|
||||
.next_help_heading(Some("NETWORKING"))
|
||||
.arg(Arg::new("speed").help("How fast"));
|
||||
|
@ -2485,7 +2486,7 @@ OPTIONS:
|
|||
#[test]
|
||||
fn missing_positional_final_required() {
|
||||
let app = App::new("test")
|
||||
.setting(AppSettings::AllowMissingPositional)
|
||||
.allow_missing_positional(true)
|
||||
.arg(Arg::new("arg1"))
|
||||
.arg(Arg::new("arg2").required(true));
|
||||
assert!(utils::compare_output(
|
||||
|
@ -2510,7 +2511,7 @@ OPTIONS:
|
|||
#[test]
|
||||
fn missing_positional_final_multiple() {
|
||||
let app = App::new("test")
|
||||
.setting(AppSettings::AllowMissingPositional)
|
||||
.allow_missing_positional(true)
|
||||
.arg(Arg::new("foo"))
|
||||
.arg(Arg::new("bar"))
|
||||
.arg(Arg::new("baz").takes_value(true).multiple_values(true));
|
||||
|
@ -2638,7 +2639,7 @@ OPTIONS:
|
|||
fn disabled_help_flag() {
|
||||
let res = App::new("foo")
|
||||
.subcommand(App::new("sub"))
|
||||
.setting(AppSettings::DisableHelpFlag)
|
||||
.disable_help_flag(true)
|
||||
.try_get_matches_from("foo a".split(' '));
|
||||
assert!(res.is_err());
|
||||
let err = res.unwrap_err();
|
||||
|
@ -2649,8 +2650,8 @@ fn disabled_help_flag() {
|
|||
fn disabled_help_flag_and_subcommand() {
|
||||
let res = App::new("foo")
|
||||
.subcommand(App::new("sub"))
|
||||
.setting(AppSettings::DisableHelpFlag)
|
||||
.setting(AppSettings::DisableHelpSubcommand)
|
||||
.disable_help_flag(true)
|
||||
.disable_help_subcommand(true)
|
||||
.try_get_matches_from("foo help".split(' '));
|
||||
assert!(res.is_err());
|
||||
let err = res.unwrap_err();
|
||||
|
@ -2667,7 +2668,7 @@ fn override_help_subcommand() {
|
|||
let app = App::new("bar")
|
||||
.subcommand(App::new("help").arg(Arg::new("arg").takes_value(true)))
|
||||
.subcommand(App::new("not_help").arg(Arg::new("arg").takes_value(true)))
|
||||
.setting(AppSettings::DisableHelpSubcommand);
|
||||
.disable_help_subcommand(true);
|
||||
let matches = app.try_get_matches_from(&["bar", "help", "foo"]).unwrap();
|
||||
assert_eq!(
|
||||
matches.subcommand_matches("help").unwrap().value_of("arg"),
|
||||
|
@ -2679,7 +2680,7 @@ fn override_help_subcommand() {
|
|||
fn override_help_flag_using_long() {
|
||||
let app = App::new("foo")
|
||||
.subcommand(App::new("help").long_flag("help"))
|
||||
.setting(AppSettings::DisableHelpFlag);
|
||||
.disable_help_flag(true);
|
||||
let matches = app.try_get_matches_from(&["foo", "--help"]).unwrap();
|
||||
assert!(matches.subcommand_matches("help").is_some());
|
||||
}
|
||||
|
@ -2687,7 +2688,7 @@ fn override_help_flag_using_long() {
|
|||
#[test]
|
||||
fn override_help_flag_using_short() {
|
||||
let app = App::new("foo")
|
||||
.setting(AppSettings::DisableHelpFlag)
|
||||
.disable_help_flag(true)
|
||||
.subcommand(App::new("help").short_flag('h'));
|
||||
let matches = app.try_get_matches_from(&["foo", "-h"]).unwrap();
|
||||
assert!(matches.subcommand_matches("help").is_some());
|
||||
|
@ -2718,7 +2719,7 @@ ARGS:
|
|||
#[test]
|
||||
fn disable_help_flag_affects_help_subcommand() {
|
||||
let mut app = App::new("test_app")
|
||||
.global_setting(AppSettings::DisableHelpFlag)
|
||||
.disable_help_flag(true)
|
||||
.subcommand(App::new("test").about("Subcommand"));
|
||||
app._build_all();
|
||||
|
||||
|
@ -2739,7 +2740,7 @@ fn disable_help_flag_affects_help_subcommand() {
|
|||
fn dont_propagate_version_to_help_subcommand() {
|
||||
let app = clap::App::new("test")
|
||||
.version("1.0")
|
||||
.global_setting(clap::AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.subcommand(clap::App::new("subcommand"));
|
||||
|
||||
assert!(utils::compare_output(
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::utils;
|
||||
|
||||
use clap::{arg, App, AppSettings, Arg};
|
||||
use clap::{arg, App, Arg};
|
||||
|
||||
static HIDDEN_ARGS: &str = "test 1.4
|
||||
Kevin K.
|
||||
|
@ -250,7 +250,7 @@ OPTIONS:
|
|||
fn hide_subcmds() {
|
||||
let app = App::new("test")
|
||||
.version("1.4")
|
||||
.subcommand(App::new("sub").setting(AppSettings::Hidden));
|
||||
.subcommand(App::new("sub").hide(true));
|
||||
|
||||
assert!(utils::compare_output(
|
||||
app,
|
||||
|
@ -329,7 +329,7 @@ fn hide_subcmds_only() {
|
|||
.after_help("After help")
|
||||
.mut_arg("help", |a| a.hide(true))
|
||||
.mut_arg("version", |a| a.hide(true))
|
||||
.subcommand(App::new("sub").setting(AppSettings::Hidden));
|
||||
.subcommand(App::new("sub").hide(true));
|
||||
|
||||
assert!(utils::compare_output(
|
||||
app,
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
use clap::{arg, App, AppSettings, Arg};
|
||||
use clap::{arg, App, Arg};
|
||||
|
||||
#[test]
|
||||
fn single_short_arg_without_value() {
|
||||
let app = App::new("app").setting(AppSettings::IgnoreErrors).arg(arg!(
|
||||
let app = App::new("app").ignore_errors(true).arg(arg!(
|
||||
-c --config [FILE] "Sets a custom config file"
|
||||
));
|
||||
|
||||
|
@ -15,7 +15,7 @@ fn single_short_arg_without_value() {
|
|||
|
||||
#[test]
|
||||
fn single_long_arg_without_value() {
|
||||
let app = App::new("app").setting(AppSettings::IgnoreErrors).arg(arg!(
|
||||
let app = App::new("app").ignore_errors(true).arg(arg!(
|
||||
-c --config [FILE] "Sets a custom config file"
|
||||
));
|
||||
|
||||
|
@ -29,7 +29,7 @@ fn single_long_arg_without_value() {
|
|||
#[test]
|
||||
fn multiple_args_and_final_arg_without_value() {
|
||||
let app = App::new("app")
|
||||
.setting(AppSettings::IgnoreErrors)
|
||||
.ignore_errors(true)
|
||||
.arg(arg!(
|
||||
-c --config [FILE] "Sets a custom config file"
|
||||
))
|
||||
|
@ -52,7 +52,7 @@ fn multiple_args_and_final_arg_without_value() {
|
|||
#[test]
|
||||
fn multiple_args_and_intermittent_arg_without_value() {
|
||||
let app = App::new("app")
|
||||
.setting(AppSettings::IgnoreErrors)
|
||||
.ignore_errors(true)
|
||||
.arg(arg!(
|
||||
-c --config[FILE] "Sets a custom config file"
|
||||
))
|
||||
|
@ -76,7 +76,7 @@ fn multiple_args_and_intermittent_arg_without_value() {
|
|||
#[test]
|
||||
fn subcommand() {
|
||||
let app = App::new("test")
|
||||
.setting(AppSettings::IgnoreErrors)
|
||||
.ignore_errors(true)
|
||||
.subcommand(
|
||||
App::new("some")
|
||||
.arg(
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::utils;
|
||||
|
||||
use clap::{arg, error::ErrorKind, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{arg, error::ErrorKind, App, Arg, ArgMatches};
|
||||
|
||||
#[cfg(feature = "suggestions")]
|
||||
static DYM: &str =
|
||||
|
@ -589,7 +589,7 @@ fn issue_2279() {
|
|||
#[test]
|
||||
fn infer_long_arg() {
|
||||
let app = App::new("test")
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(Arg::new("racetrack").long("racetrack").alias("autobahn"))
|
||||
.arg(Arg::new("racecar").long("racecar").takes_value(true));
|
||||
|
||||
|
@ -615,7 +615,7 @@ fn infer_long_arg() {
|
|||
assert_eq!(matches.value_of("racecar"), None);
|
||||
|
||||
let app = App::new("test")
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(Arg::new("arg").long("arg"));
|
||||
|
||||
let matches = app.clone().try_get_matches_from(&["test", "--"]).unwrap();
|
||||
|
|
|
@ -15,7 +15,7 @@ fn only_pos_follow() {
|
|||
#[test]
|
||||
fn issue_946() {
|
||||
let r = App::new("compiletest")
|
||||
.setting(clap::AppSettings::AllowHyphenValues)
|
||||
.allow_hyphen_values(true)
|
||||
.arg(arg!(--exact "filters match exactly"))
|
||||
.arg(
|
||||
clap::Arg::new("filter")
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::utils;
|
||||
|
||||
use clap::{arg, error::ErrorKind, App, AppSettings, Arg};
|
||||
use clap::{arg, error::ErrorKind, App, Arg};
|
||||
|
||||
static VISIBLE_ALIAS_HELP: &str = "clap-test 2.6
|
||||
|
||||
|
@ -506,8 +506,8 @@ fn issue_2494_subcommand_is_present() {
|
|||
fn subcommand_not_recognized() {
|
||||
let app = App::new("fake")
|
||||
.subcommand(App::new("sub"))
|
||||
.setting(AppSettings::DisableHelpSubcommand)
|
||||
.setting(AppSettings::InferSubcommands);
|
||||
.disable_help_subcommand(true)
|
||||
.infer_subcommands(true);
|
||||
assert!(utils::compare_output(
|
||||
app,
|
||||
"fake help",
|
||||
|
@ -529,7 +529,7 @@ fn busybox_like_multicall() {
|
|||
[App::new("true"), App::new("false")]
|
||||
}
|
||||
let app = App::new("busybox")
|
||||
.setting(AppSettings::Multicall)
|
||||
.multicall(true)
|
||||
.subcommand(App::new("busybox").subcommands(applet_commands()))
|
||||
.subcommands(applet_commands());
|
||||
|
||||
|
@ -552,7 +552,7 @@ fn busybox_like_multicall() {
|
|||
#[test]
|
||||
fn hostname_like_multicall() {
|
||||
let mut app = App::new("hostname")
|
||||
.setting(AppSettings::Multicall)
|
||||
.multicall(true)
|
||||
.subcommand(App::new("hostname"))
|
||||
.subcommand(App::new("dnsdomainname"));
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#![cfg(not(windows))]
|
||||
|
||||
use clap::{arg, error::ErrorKind, App, AppSettings, Arg};
|
||||
use clap::{arg, error::ErrorKind, App, Arg};
|
||||
use std::ffi::OsString;
|
||||
use std::os::unix::ffi::OsStringExt;
|
||||
|
||||
|
@ -322,7 +322,7 @@ fn invalid_utf8_option_long_equals() {
|
|||
#[test]
|
||||
fn refuse_invalid_utf8_subcommand_with_allow_external_subcommands() {
|
||||
let m = App::new("bad_utf8")
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.allow_external_subcommands(true)
|
||||
.try_get_matches_from(vec![
|
||||
OsString::from(""),
|
||||
OsString::from_vec(vec![0xe9]),
|
||||
|
@ -335,8 +335,8 @@ fn refuse_invalid_utf8_subcommand_with_allow_external_subcommands() {
|
|||
#[test]
|
||||
fn refuse_invalid_utf8_subcommand_when_args_are_allowed_with_allow_external_subcommands() {
|
||||
let m = App::new("bad_utf8")
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.setting(AppSettings::AllowInvalidUtf8ForExternalSubcommands)
|
||||
.allow_external_subcommands(true)
|
||||
.allow_invalid_utf8_for_external_subcommands(true)
|
||||
.try_get_matches_from(vec![
|
||||
OsString::from(""),
|
||||
OsString::from_vec(vec![0xe9]),
|
||||
|
@ -349,7 +349,7 @@ fn refuse_invalid_utf8_subcommand_when_args_are_allowed_with_allow_external_subc
|
|||
#[test]
|
||||
fn refuse_invalid_utf8_subcommand_args_with_allow_external_subcommands() {
|
||||
let m = App::new("bad_utf8")
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.allow_external_subcommands(true)
|
||||
.try_get_matches_from(vec![
|
||||
OsString::from(""),
|
||||
OsString::from("subcommand"),
|
||||
|
@ -364,8 +364,8 @@ fn refuse_invalid_utf8_subcommand_args_with_allow_external_subcommands() {
|
|||
#[test]
|
||||
fn allow_invalid_utf8_subcommand_args_with_allow_external_subcommands() {
|
||||
let m = App::new("bad_utf8")
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.setting(AppSettings::AllowInvalidUtf8ForExternalSubcommands)
|
||||
.allow_external_subcommands(true)
|
||||
.allow_invalid_utf8_for_external_subcommands(true)
|
||||
.try_get_matches_from(vec![
|
||||
OsString::from(""),
|
||||
OsString::from("subcommand"),
|
||||
|
@ -445,7 +445,7 @@ fn ignore_invalid_utf8_with_defaults() {
|
|||
|
||||
#[test]
|
||||
fn allow_validated_utf8_external_subcommand_values_of() {
|
||||
let a = App::new("test").setting(AppSettings::AllowExternalSubcommands);
|
||||
let a = App::new("test").allow_external_subcommands(true);
|
||||
let m = a.try_get_matches_from(vec!["test", "cmd", "arg"]).unwrap();
|
||||
let (_ext, args) = m.subcommand().unwrap();
|
||||
let _ = args.values_of("");
|
||||
|
@ -454,7 +454,7 @@ fn allow_validated_utf8_external_subcommand_values_of() {
|
|||
#[test]
|
||||
#[should_panic = "Must use `Arg::allow_invalid_utf8` with `_os` lookups at ``"]
|
||||
fn panic_validated_utf8_external_subcommand_values_of_os() {
|
||||
let a = App::new("test").setting(AppSettings::AllowExternalSubcommands);
|
||||
let a = App::new("test").allow_external_subcommands(true);
|
||||
let m = a.try_get_matches_from(vec!["test", "cmd", "arg"]).unwrap();
|
||||
let (_ext, args) = m.subcommand().unwrap();
|
||||
let _ = args.values_of_os("");
|
||||
|
@ -463,8 +463,8 @@ fn panic_validated_utf8_external_subcommand_values_of_os() {
|
|||
#[test]
|
||||
fn allow_invalid_utf8_external_subcommand_values_of_os() {
|
||||
let a = App::new("test")
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.setting(AppSettings::AllowInvalidUtf8ForExternalSubcommands);
|
||||
.allow_external_subcommands(true)
|
||||
.allow_invalid_utf8_for_external_subcommands(true);
|
||||
let m = a.try_get_matches_from(vec!["test", "cmd", "arg"]).unwrap();
|
||||
let (_ext, args) = m.subcommand().unwrap();
|
||||
let _ = args.values_of_os("");
|
||||
|
@ -474,8 +474,8 @@ fn allow_invalid_utf8_external_subcommand_values_of_os() {
|
|||
#[should_panic = "Must use `_os` lookups with `Arg::allow_invalid_utf8` at ``"]
|
||||
fn panic_invalid_utf8_external_subcommand_values_of() {
|
||||
let a = App::new("test")
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.setting(AppSettings::AllowInvalidUtf8ForExternalSubcommands);
|
||||
.allow_external_subcommands(true)
|
||||
.allow_invalid_utf8_for_external_subcommands(true);
|
||||
let m = a.try_get_matches_from(vec!["test", "cmd", "arg"]).unwrap();
|
||||
let (_ext, args) = m.subcommand().unwrap();
|
||||
let _ = args.values_of("");
|
||||
|
|
|
@ -158,7 +158,7 @@ OPTIONS:
|
|||
fn version_about_multi_subcmd() {
|
||||
let app = with_subcommand()
|
||||
.mut_arg("version", |a| a.help("Print custom version about text"))
|
||||
.global_setting(AppSettings::PropagateVersion);
|
||||
.propagate_version(true);
|
||||
|
||||
assert!(utils::compare_output(
|
||||
app,
|
||||
|
@ -190,7 +190,7 @@ fn no_propagation_by_default_short() {
|
|||
#[test]
|
||||
fn propagate_version_long() {
|
||||
let res = with_subcommand()
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.try_get_matches_from("foo bar --version".split(' '));
|
||||
|
||||
assert!(res.is_err());
|
||||
|
@ -201,7 +201,7 @@ fn propagate_version_long() {
|
|||
#[test]
|
||||
fn propagate_version_short() {
|
||||
let res = with_subcommand()
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.try_get_matches_from("foo bar -V".split(' '));
|
||||
|
||||
assert!(res.is_err());
|
||||
|
@ -234,7 +234,7 @@ fn mut_arg_version_no_auto_version() {
|
|||
#[should_panic = "No version information via App::version or App::long_version to propagate"]
|
||||
fn propagate_version_no_version_info() {
|
||||
let _res = common()
|
||||
.setting(AppSettings::PropagateVersion)
|
||||
.propagate_version(true)
|
||||
.subcommand(App::new("bar"))
|
||||
.try_get_matches_from("foo".split(' '));
|
||||
}
|
||||
|
|
|
@ -194,7 +194,7 @@ fn flatten_field_with_help_heading() {
|
|||
#[test]
|
||||
fn derive_generated_error_has_full_context() {
|
||||
#[derive(Debug, Parser)]
|
||||
#[clap(setting(AppSettings::SubcommandsNegateReqs))]
|
||||
#[clap(subcommand_negates_reqs = true)]
|
||||
struct Opts {
|
||||
#[clap(long)]
|
||||
req_str: String,
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
use crate::utils;
|
||||
|
||||
use clap::{AppSettings, ArgGroup, Args, Parser, Subcommand};
|
||||
use clap::{ArgGroup, Args, Parser, Subcommand};
|
||||
|
||||
#[test]
|
||||
fn issue_151() {
|
||||
|
@ -31,7 +31,7 @@ fn issue_151() {
|
|||
#[test]
|
||||
fn issue_289() {
|
||||
#[derive(Parser)]
|
||||
#[clap(setting = AppSettings::InferSubcommands)]
|
||||
#[clap(infer_subcommands = true)]
|
||||
enum Args {
|
||||
SomeCommand {
|
||||
#[clap(subcommand)]
|
||||
|
@ -41,7 +41,7 @@ fn issue_289() {
|
|||
}
|
||||
|
||||
#[derive(Subcommand)]
|
||||
#[clap(setting = AppSettings::InferSubcommands)]
|
||||
#[clap(infer_subcommands = true)]
|
||||
enum SubSubCommand {
|
||||
TestCommand,
|
||||
}
|
||||
|
|
|
@ -12,14 +12,14 @@
|
|||
// commit#ea76fa1b1b273e65e3b0b1046643715b49bec51f which is licensed under the
|
||||
// MIT/Apache 2.0 license.
|
||||
|
||||
use clap::{AppSettings, ErrorKind, Parser};
|
||||
use clap::{ErrorKind, Parser};
|
||||
use std::num::ParseIntError;
|
||||
|
||||
pub const DISPLAY_ORDER: usize = 2;
|
||||
|
||||
// Check if the global settings compile
|
||||
#[derive(Parser, Debug, PartialEq, Eq)]
|
||||
#[clap(global_setting = AppSettings::AllowHyphenValues)]
|
||||
#[clap(allow_hyphen_values = true)]
|
||||
struct Opt {
|
||||
#[clap(
|
||||
long = "x",
|
||||
|
|
|
@ -113,7 +113,7 @@ fn option_type_is_optional() {
|
|||
#[test]
|
||||
fn required_with_option_type() {
|
||||
#[derive(Debug, PartialEq, Eq, Parser)]
|
||||
#[clap(setting(clap::AppSettings::SubcommandsNegateReqs))]
|
||||
#[clap(subcommand_negates_reqs = true)]
|
||||
struct Opt {
|
||||
#[clap(required = true)]
|
||||
req_str: Option<String>,
|
||||
|
|
Loading…
Add table
Reference in a new issue