Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(deps): update rust crate clap to 3.2.25 - autoclosed #23

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Oct 18, 2021

Mend Renovate logo banner

This PR contains the following updates:

Package Type Update Change
clap dependencies minor 3.0.0-beta.4 -> 3.2.25

Release Notes

clap-rs/clap (clap)

v3.2.25

Compare Source

[3.2.25] - 2023-04-27

Fixes
  • (derive) Resolve warnings in generated code

v3.2.24

Compare Source

[3.2.24] - 2023-04-25

Fixes
  • (derive) Resolve warnings in generated code

v3.2.23

Compare Source

[3.2.23] - 2022-10-24

Fixes
  • Upgrade to textwrap 0.16

v3.2.22

Compare Source

[3.2.22] - 2022-09-16

Fixes
  • Unify dependencies on terminal_size to the 0.2 release

v3.2.21

Compare Source

[3.2.21] - 2022-09-12

Features
  • TypedValueParser::map to allow reusing existing value parsers for other purposes

v3.2.20

Compare Source

[3.2.20] - 2022-09-02

Features
  • ArgMatches::get_count help for ArgAction::Count
  • ArgMatches::get_flag help for ArgAction::SetTrue / ArgAction::SetFalse

v3.2.19

Compare Source

[3.2.19] - 2022-08-30

Fixes
  • (help) Ensure required arguments for parent commands aren't shown in their subcommands when using args_conflicts_with_subcommand

v3.2.18

Compare Source

Fixes
  • (help) Command::print_help now respects Command::colored_help
  • (derive) Improved error messages

v3.2.17

Compare Source

Fixes
  • (derive) Expose #[clap(id = ...)] attribute to match Arg's latest API

v3.2.16

Compare Source

Fixes
  • Ensure required arguments appear in errors when they are also members of a group (#​4004)

v3.2.15

Compare Source

Features
  • (derive) New default_values_t and default_values_os_t attributes

v3.2.14

Compare Source

Fixes
  • A multiple_values positional followed by another positional now works with multiple flags

v3.2.13

Compare Source

Documentation
  • Pulled in tutorials, cookbook, and derive reference into rustdoc

v3.2.12

Compare Source

Fixes
  • Allow an arg to declare a conflict with a group

v3.2.11

Compare Source

Features
  • Added Arg::get_all_short_aliaes and Arg::get_all_aliases

v3.2.10

Compare Source

Fixes
  • Loosen lifetime on Command::mut_subcommand

v3.2.8

Compare Source

Features
  • Added Command::mut_subcommand to mirror Command::mut_arg

v3.2.7

Compare Source

Fixes
  • Global arguments should override env-sourced arguments

v3.2.6

Compare Source

Fixes
  • Don't panic when parsing --=

v3.2.5

Compare Source

Fixes
  • (derive) Fix regression with #[clap(default_value_os_t ...)] introduced in v3.2.3

v3.2.4

Compare Source

Fixes
  • (derive) Provide more clearer deprecation messages for #[clap(parse)] attribute (#​3832)

v3.2.3

Compare Source

Fixes
  • Moved deprecations to be behind the deprecated Cargo.toml feature (#​3830)
    • For now, it is disabled by default though we are considering enabling it by
      default as we release the next major version to help draw attention to the
      deprecation migration path

v3.2.2

Compare Source

Fixes
  • (derive) Improve the highlighted code for deprecation warnings

gated behind unstable-v4

  • (derive) Default to #[clap(value_parser, action)] instead of #[clap(parse)] (#​3827)

v3.2.1

Compare Source

Fixes
  • (help) Command::print_help now respects Command::colored_help
  • (derive) Improved error messages

v3.2.0

Compare Source

Compatibility

MSRV is now 1.56.0 (#​3732)

Behavior

  • Defaults no longer satisfy required and its variants (#​3793)
  • When misusing ArgMatches::value_of and friends, debug asserts were turned into panics

Moving (old location deprecated)

  • clap::{PossibleValue, ValueHint} to clap::builder::{PossibleValue, ValueHint}
  • clap::{Indices, OsValues, ValueSource, Values} to clap::parser::{Indices, OsValues, ValueSource, Values}
  • clap::ArgEnum to clap::ValueEnum (#​3799)

Replaced

  • Arg::allow_invalid_utf8 with Arg::value_parser(value_parser!(PathBuf)) (#​3753)
  • Arg::validator / Arg::validator_os with Arg::value_parser (#​3753)
  • Arg::validator_regex with users providing their own builder::TypedValueParser (#​3756)
  • Arg::forbid_empty_values with builder::NonEmptyStringValueParser / builder::PathBufValueParser (#​3753)
  • Arg::possible_values with Arg::value_parser([...]), builder::PossibleValuesParser, or builder::EnumValueParser (#​3753)
  • Arg::max_occurrences with arg.action(ArgAction::Count).value_parser(value_parser!(u8).range(..N)) for flags (#​3797)
  • Arg::multiple_occurrences with ArgAction::Append or ArgAction::Count though positionals will need Arg::multiple_values (#​3772, #​3797)
  • Command::args_override_self with ArgAction::Set (#​2627, #​3797)
  • AppSettings::NoAutoVersion with ArgAction or Command::disable_version_flag (#​3800)
  • AppSettings::NoHelpVersion with ArgAction or Command::disable_help_flag / Command::disable_help_subcommand (#​3800)
  • ArgMatches::{value_of, value_of_os, value_of_os_lossy, value_of_t} with ArgMatches::{get_one,remove_one} (#​3753)
  • ArgMatches::{values_of, values_of_os, values_of_os_lossy, values_of_t} with ArgMatches::{get_many,remove_many} (#​3753)
  • ArgMatches::is_valid_arg with ArgMatches::{try_get_one,try_get_many} (#​3753)
  • ArgMatches::occurrences_of with ArgMatches::value_source or ArgAction::Count (#​3797)
  • ArgMatches::is_present with ArgMatches::contains_id or ArgAction::SetTrue (#​3797)
  • ArgAction::StoreValue with ArgAction::Set or ArgAction::Append (#​3797)
  • ArgAction::IncOccurrences with ArgAction::SetTrue or ArgAction::Count (#​3797)
  • (derive) #[clap(parse(...))] replaced with: (#​3589, #​3794)
    • For default parsers (no parse attribute), deprecation warnings can be
      silenced by opting into the new behavior by adding either #[clap(action)]
      or #[clap(value_parser)] (ie requesting the default behavior for these
      attributes). Alternatively, the unstable-v4 feature changes the default
      away from parse to action/value_parser.
    • For #[clap(parse(from_flag))] replaced with #[clap(action = ArgAction::SetTrue)] (#​3794)
    • For #[clap(parse(from_occurrences))] replaced with #[clap(action = ArgAction::Count)] though the field's type must be u8 (#​3794)
    • For #[clap(parse(from_os_str)] for PathBuf, replace it with
      #[clap(value_parser)] (as mentioned earlier this will call
      value_parser!(PathBuf) which will auto-select the right ValueParser
      automatically).
    • For #[clap(parse(try_from_str = ...)], replace it with #[clap(value_parser = ...)]
    • For most other cases, a type implementing TypedValueParser will be needed and specify it with #[clap(value_parser = ...)]
Features
  • Parsed, typed arguments via Arg::value_parser / ArgMatches::{get_one,get_many} (#​2683, #​3732)
    • Several built-in TypedValueParsers available with an API open for expansion
    • value_parser!(T) macro for selecting a parser for a given type (#​3732) and open to expansion via the ValueParserFactory trait (#​3755)
    • [&str] is implicitly a value parser for possible values
    • All ArgMatches getters do not assume required arguments (#​2505)
    • Add ArgMatches::remove_* variants to transfer ownership
    • Add ArgMatches::try_* variants to avoid panics for developer errors (#​3621)
    • Add a get_raw to access the underlying OsStrs
    • PathBuf value parsers imply ValueHint::AnyPath for completions (#​3732)
  • Explicit control over parsing via Arg::action (#​3774)
    • ArgAction::StoreValue: existing takes_value(true) behavior
    • ArgAction::IncOccurrences: existing takes_value(false) behavior
    • ArgAction::Help: existing --help behavior
    • ArgAction::Version: existing --version behavior
    • ArgAction::Set: Overwrite existing values (like Arg::multiple_occurrences mixed with Command::args_override_self) (#​3777)
    • ArgAction::Append: like Arg::multiple_occurrences (#​3777)
    • ArgAction::SetTrue: Treat --flag as --flag=true (#​3775)
      • Implies Arg::default_value("false") (#​3786)
      • Parses Arg::env via Arg::value_parser
    • ArgAction::SetFalse: Treat --flag as --flag=false (#​3775)
      • Implies Arg::default_value("true") (#​3786)
      • Parses Arg::env via Arg::value_parser
    • ArgAction::Count: Treat --flag --flag --flag as --flag=1 --flag=2 --flag=3 (#​3775)
      • Implies Arg::default_value("0") (#​3786)
      • Parses Arg::env via Arg::value_parser
  • (derive) Opt-in to new Arg::value_parser / Arg::action with either #[clap(value_parser)] (#​3589, #​3742) / #[clap(action)] attributes (#​3794)
    • Default ValueParser is determined by value_parser! (#​3199, #​3496)
    • Default ArgAction is determine by a hard-coded lookup on the type (#​3794)
  • Command::multicall is now stable for busybox-like programs and REPLs (#​2861, #​3684)
  • ArgMatches::{try_,}contains_id for checking if there are values for an argument that mirrors the new get_{one,many} API
Fixes
  • Don't correct argument id in default_value_ifs_os(#​3815)

parser

  • Set ArgMatches::value_source and ArgMatches::occurrences_of for external subcommands (#​3732)
  • Use value delimiter for Arg::default_missing_values (#​3761, #​3765)
  • SplitArg::default_value / Arg::env on value delimiters independent of whether -- was used (#​3765)
  • Allow applying defaults to flags (#​3294, 3775)
  • Defaults no longer satisfy required and its variants (#​3793)

v3.1.18

Compare Source

Fixes
  • Fix deprecated arg_enum! for users migrating to clap3 (#​3717)
  • Verify all required_unless_present_all arguments exist
  • Verify group members exist before processing group members (#​3711)
  • (help) Use ... when not enough value_names are supplied

gated behind unstable-v4

  • Verify required is not used with conditional required settings (#​3660)
  • Disallow more value_names than number_of_values (#​2695)
  • (parser) Assert on unknown args when using external subcommands (#​3703)
  • (parser) Always fill in "" argument for external subcommands (#​3263)
  • (derive) Detect escaped external subcommands that look like built-in subcommands (#​3703)
  • (derive) Leave Arg::id as verbatim casing (#​3282)

v3.1.17

Compare Source

Fixes
  • Allow value names for arg! macro to have dashes when quoted, like longs

v3.1.16

Compare Source

Fixes
  • (parser) Arg::exclusive overrides Arg::required, like other conflicts
  • (error) Don't duplicate arguments in usage
  • (error) Don't show hidden arguments in conflict error usage
  • (help) New help_template variable {name} to fix problems with {bin}
  • (help) Don't wrap URLs

gated behind unstable-v4

  • Leading dashes in Arg::long are no longer allowed
  • (help) Use Command::display_name in the help title rather than Command::bin_name

v3.1.15

Compare Source

Fixes
  • (error) Render actual usage for unrecognized subcommands
  • (multicall) Improve bad command error
  • (multicall) Always require a multicall command
  • (multicall) Disallow arguments on multicall parent command
  • (multicall) More consistent with rest of clap errors

v3.1.14

Compare Source

Fixes
  • Panic when calling Command::build with a required positional argument nested several layers in subcommands

v3.1.13

Compare Source

Fixes
  • Help subcommand and Command::write_help now report required arguments in usage in more circumstances
  • Unknown subcommand for help subcommand flag now reports an error with more context
  • More details reported when using debug feature
  • Allow disabling color feature with debug feature enabled

v3.1.12

Compare Source

Fixes
  • Regression in 3.1.11 where the (output) streams were crossed

v3.1.11

Compare Source

Fixes
  • Implied conflicts override Arg::required, making the behavior consistent with how we calculate conflicts for error reporting
  • Members of a mutually exclusive ArgGroup override Arg::required, making the behavior consistent with how we calculate conflicts for error reporting
  • Arg::overrides_with always override Arg::required, not just when the parser processes an override

v3.1.10

Compare Source

Features
  • Expose Command::build for custom help generation or other command introspection needs

v3.1.9

Compare Source

Fixes
  • Pin the clap_derive version so a compatible version is always used with clap

v3.1.8

Compare Source

Fixes
  • Add Debug impls to more types

v3.1.7

Compare Source

Fixes
  • (derive) Abort, rather than ignore, when deriving ArgEnum with non-unit unskipped variants

v3.1.6

Compare Source

Fixes
  • Don't panic when validating delimited defaults (#​3541)
  • Make it clearer that cargo feature is needed
  • Documentation improvements

v3.1.5

Compare Source

Fixes
  • Dependency upgrade

v3.1.4

Compare Source

Features
  • (help) Show PossibleValue::help in long help (--help) (gated behind unstable-v4) (#​3312)

v3.1.3

Compare Source

Fixes
  • Don't panic when validating delimited defaults (#​3514)

v3.1.2

Compare Source

Fixes
  • (derive) Allow other attribute with a subcommand that has subcommands
Documentation
  • (examples) List example topics
  • (derive) Clarify syntax and relation to builder API

v3.1.1

Compare Source

Fixes
  • Fix deprecated arg_enum! for users migrating to clap3 (#​3717)
  • Verify all required_unless_present_all arguments exist
  • Verify group members exist before processing group members (#​3711)
  • (help) Use ... when not enough value_names are supplied

gated behind unstable-v4

  • Verify required is not used with conditional required settings (#​3660)
  • Disallow more value_names than number_of_values (#​2695)
  • (parser) Assert on unknown args when using external subcommands (#​3703)
  • (parser) Always fill in "" argument for external subcommands (#​3263)
  • (derive) Detect escaped external subcommands that look like built-in subcommands (#​3703)
  • (derive) Leave Arg::id as verbatim casing (#​3282)

v3.1.0

Compare Source

Compatibility

Changes in behavior of note that are not guaranteed to be compatible across releases:

  • (help) help subcommand shows long help like --help, rather than short help (-h), deprecated clap::AppSettings::UseLongFormatForHelpSubcommand (#​3440)
  • (help) Pacman-style subcommands are now ordered the same as usage errors (#​3470)
  • (help) Pacman-style subcommands use standard alternate syntax in usage (#​3470)
Deprecations
  • clap::Command is now preferred over clap::App (#​3089 in #​3472)
    • clap::command! is now preferred over clap::app_from_crate (#​3089 in #​3474)
    • clap::CommandFactory::command is now preferred over clap::IntoApp::into_app (#​3089 in #​3473)
  • (help) help subcommand shows long help like --help, rather than short help (-h), deprecated clap::AppSettings::UseLongFormatForHelpSubcommand (#​3440)
  • (error) Deprecate clap::AppSettings::WaitOnError, leaving it to the user to implement
  • (validation) clap::Command::subcommand_required(true).arg_required_else_help(true) is now preferred over clap::AppSettings::SubcommandRequiredElseHelp (#​3280)
  • (builder) clap::AppSettings are nearly all deprecated and replaced with builder methods and getters (#​2717)
  • (builder) clap::ArgSettings is deprecated and replaced with builder methods and getters (#​2717)
  • (builder) clap::Arg::id and clap::ArgGroup::id are now preferred over clap::Arg::name and clap::ArgGroup::name (#​3335)
  • (help) clap::Command::next_help_heading is now preferred over clap::Command::help_heading (#​1807, #​1553)
  • (error) clap::error::ErrorKind is now preferred over clap::ErrorKind (#​3395)
  • (error) clap::Error::kind() is now preferred over clap::Error::kind
  • (error) clap::Error::context() is now preferred over clap::Error::info (#​2628)

Note: All items deprecated in 3.0.0 are now hidden in the documentation. (#​3458)

Features
  • (matches) Add clap::ArgMatches::value_source to determine what insert the value (#​1345)
  • (help) Override derived display order with clap::Command::next_display_order (#​1807)
  • (error) Show possible values when an argument doesn't have a value (#​3320)
  • (error) New clap::Error::context API to open the door for fully-custom error messages (#​2628)
    • (error) clap::error::ErrorKind now implements Display
Fixes
  • (builder) Some functions were renamed for consistency and fixing spelling issues
  • (builder) Allow clap::Command::color to override previous calls (#​3449)
  • (parse) Propagate globals with multiple subcommands (#​3428)
  • (validation) Give ArgRequiredElseHelp precedence over SubcommandRequired (#​3456)
  • (validation) Default values no longer count as "present" for conflicts, requires, clap::Command::arg_required_else_help, etc (#​3076, #​1264)
  • (assert) Report invalid defaults (#​3202)
  • (help) Clarify how to handle -h conflicts (#​3403)
  • (help) Make it easier to debug the addition of help flags (#​3425)
  • (help) Pacman-style subcommands are now separated with spaces (#​3470)
  • (help) Pacman-style subcommands are now ordered the same as usage errors (#​3470)
  • (help) Pacman-style subcommands use standard alternate syntax in usage (#​3470)
  • (error) Be consistent in showing of required attributes between errors / usage (#​3390)
  • (error) Show user's order of possible values, like in --help (#​1549)
  • (error) Allow customizing error type in clap::error::Result (#​3395)
Performance
  • (error) Reduced stack size of clap::Error (#​3395)
Documentation
  • (builder) Correct data take accepted for clap::Arg::validator
  • (derive) Clarify parse attribute
  • (tutorial) Demonstrate custom parsing
  • (example) Consistently list out required feature flags (#​3448)

v3.0.14

Compare Source

Features
  • Added ArgMatches::args_present() to check if any args are present
  • Added Error::kind() as we work to deprecate direct member access for Error
  • Added App::get_version
  • Added App::get_long_version
  • Added App::get_author
  • Added App::get_subcommand_help_heading
  • Added App::get_subcommand_value_name
  • Added App::get_after_help
  • Added App::get_after_long_help
Performance
  • Misc binary size reductions

v3.0.13

Compare Source

Fixes
  • Show optional flag values wrapped in []

v3.0.12

Compare Source

Features
  • (derive) Support for default_value_os_t

v3.0.11

Compare Source

Fixes
  • Ensure conflicts work when they target a group with a default value

v3.0.10

Compare Source

Fixes
  • Resolve panic! from v3.0.8 when using global_setting(PropagateVersion).

v3.0.9

Compare Source

Features
  • Added App::find_subcommand_mut

v3.0.8

Compare Source

Fixes
  • Respected DisableColoredHelp on cmd help help
  • Provide a little more context when completing arguments for cmd help
  • Provide more context for some asserts
  • Small documentation improvements

v3.0.7

Compare Source

Fixes
  • Shift more asserts from parsing to App building (ie will now run in App::debug_assert)

derive

  • Documentation fixes

v3.0.6

Compare Source

Fixes

derive

  • Don't assume user does use clap::ArgEnum (#​3277)
  • Documentation fixes

v3.0.5

Compare Source

Fixes

docs:

  • Cleaned up code blocks in tutorials (#​3261)
  • Clean up quotes in ArgMatches asserts
  • List correct replacement for deprecated Parser::from_clap (#​3257)

v3.0.4

Compare Source

Features
  • For very limited cases, like cargo, expose ArgMatches::is_valid_arg to avoid panicing on undefined arguments

v3.0.3

Compare Source

Fixes
  • Specify cause of debug assert failure

v3.0.2

Compare Source

Fixes
  • Ignore Last when checking hyphen values (see #​3249 for details)
  • Help catch bugs with #[must_use]

v3.0.1

Compare Source

Features
  • Added ArgMatches::args_present() to check if any args are present
  • Added Error::kind() as we work to deprecate direct member access for Error
  • Added App::get_version
  • Added App::get_long_version
  • Added App::get_author
  • Added App::get_subcommand_help_heading
  • Added App::get_subcommand_value_name
  • Added App::get_after_help
  • Added App::get_after_long_help
Performance
  • Misc binary size reductions

v3.0.0

Compare Source

Note: clap v3 has been in development for several years and has changed
hands multiple times. Unfortunately, our changelog might be incomplete,
whether in changes or their motivation.

Highlights

A special thanks to the maintainers, contributors, beta users, and sponsors who
have helped along this journey, especially kbknapp.

StructOpt Integration

StructOpt provides a serde-like declarative
approach to defining your parser. The main benefits we've seen so far from integrating are:

  • Tighter feedback between the design of clap and the derives
  • More universal traits. Crates exist for common CLI patterns
    (example)
    and we've re-designed the StructOpt traits so crates built on clap3 can be
    reused not just with other derives but also people using the builder API.
    People can even hand implement these so people using the builder API won't
    have the pay the cost for derives.

Custom Help Headings

Previously, clap automatically grouped arguments in the help as either
ARGS, FLAGS, OPTIONS, and SUBCOMMANDS.

You can now override the default group with Arg::help_heading and
App::subcommand_help_heading. To apply a heading to a series of arguments,
you can set App::help_heading.

Deprecations

While a lot of deprecations have been added to clean up the API (overloaded
meaning of Arg::multiple) or make things more consistent, some particular
highlights are:

Migrating

From clap v2

  1. Add CLI tests, -h and --help output at a minimum (recommendation: trycmd for snapshot testing)
  2. Update your dependency
    1. If you use no-default-features: add the std feature
  3. Resolve compiler errors
  4. Resolve behavior changes
    1. Refactor your App creation to a function and add a test similar to the one below, resolving any of its assertions
    2. Look over the "subtle changes" under BREAKING CHANGES
    3. If using builder: test your application under various circumstances to see if ArgMatches asserts regarding AllowInvalidUtf8.
  5. At your leisure: resolve deprecation notices

Example test:

fn app() -> clap::App<'static> {
    ...
}

#[test]
fn verify_app() {
    app().debug_assert();
}

From structopt 0.3.25

  1. Add CLI tests, -h and --help output at a minimum (recommendation: trycmd for snapshot testing)
  2. Replace your dependency from structopt = "..." to clap = { version = "3.0", features = ["derive"] }
    1. If you use no-default-features: add the std feature
  3. Resolve compiler errors, including
    1. Update your use statements from structopt and structopt::clap to clap
  4. Resolve behavior changes
    1. Add a test similar to the one below, resolving any of its assertions
    2. Look over the "subtle changes" under BREAKING CHANGES
  5. At your leisure: resolve deprecation notices

Example test:

#[derive(clap::StructOpt)]
struct Args {
    ...
}

#[test]
fn verify_app() {
    use clap::IntoApp;
    Args::into_app().debug_assert()
}

From clap v3.0.0-beta.5

  1. Add CLI tests, -h and --help output at a minimum (recommendation: trycmd for snapshot testing)
  2. Update your dependency
    1. Add in derive, env, cargo, or unicode feature flags as needed
  3. Resolve compiler errors
    1. If you use yaml, clap_app!, or usage parser: revert any changes you made for clap3
    2. Change Arg::about Arg::long_about back to help and long_help and change PossibleValue::about to help (clap-rs/clap#3075)
    3. Change AppSettings::HelpRequired to AppSettings::HelpExpected
    4. Change PossibleValue::hidden to PossibleValue::hide
    5. Change App::subcommand_placeholder to App::subcommand_value_name / App::subcommand_help_heading
  4. Resolve behavior changes
    1. Add the above listed test appropriate for your application and resolve any problems it reports
    2. If using derive: see the structopt breaking changes section for Vec changes
    3. If using builder: test your application under various circumstances to see if ArgMatches asserts regarding AllowInvalidUtf8.
  5. At your leisure: resolve deprecation notices
BREAKING CHANGES

From clap 2

Subtle changes (i.e. compiler won't catch):

  • AppSettings::UnifiedHelpMessage is now default behaviour
    • {flags} and {unified} will assert if present in App::help_template
    • See clap-rs/clap#2807
  • AppSettings::EnableColoredHelp is now the default behavior but can be
    opted-out with AppSettings::DisableColoredHelp
    (clap-rs/clap#2806)
  • App::override_usage no longer implies a leading \t, allowing multi lined usages
  • Arg::require_equals no longer implies ArgSettings::ForbidEmptyValues (#​2233)
  • Arg::require_delimiter no longer implies ArgSettings::TakesValue and ArgSettings::UseValueDelimiter (#​2233)
  • Arg::env, Arg::env_os, Arg::last, Arg::require_equals, Arg::allow_hyphen_values,
    Arg::hide_possible_values, Arg::hide_default_value, Arg::hide_env_values,
    Arg::case_insensitive and Arg::multiple_values no longer imply ArgSettings::TakesValue (#​2233)
  • ArgMatches::is_present no longer checks subcommand names
  • Some env variable values are now considered false for flags, not just "not-present" (clap-rs/clap#2539)
  • Changed ...s meaning in usage parser. Before, it always meant multiple which is still true for --option [val].... Now [name]... --option [val] results in ArgSettings::MultipleOccurrences.
  • Usage exit code changed from 1 to 2 (clap-rs/clap#1327)
  • Reject --foo=bar when takes_value(false) (clap-rs/clap#1543)
  • No longer accept an arbitrary number of - for long arguments (-----long)

Easier to catch changes:

  • When using no-default-features, you now have to specify the std feature (reserved for future work)
  • Gated env support behind env feature flag
    • Impacts Arg::env, Arg::env_os, Arg::hide_env_values, ArgSettings::HideEnvValues
    • See clap-rs/clap#2694
  • Gated crate information behind cargo feature flag
    • Impacts crate_name!, crate_version!, crate_authors!, crate_description!, app_from_crate!
  • AppSettings::StrictUtf8 is now default behaviour and asserts if
    AppSettings::AllowInvalidUtf8ForExternalSubcommands and
    ArgSettings::AllowInvalidUtf8 and ArgMatches::value_of_os aren't used
    together
  • Arg::short and Arg::value_delimiter now take a char instead of a &str
  • ArgMatches panics on unknown arguments
  • Removed VersionlessSubcommands, making it the default (see clap-rs/clap#2812)
  • Completion generation has been split out into clap_complete.
  • Removed ArgSettings::EmptyValues in favor of ArgSettings::ForbidEmptyValues
  • Validator signatures have been loosed:
    • Arg::validator now takes first argument as Fn(&str) -> Result<O, E: ToString> instead of
      Fn(String) -> Result<(), String>
    • Arg::validator_os now takes first argument as Fn(&OsStr) -> Result<O, OsString> instead of
      Fn(&OsStr) -> Result<(), OsString>
  • Arg::value_name now sets, rather than appends (see clap-rs/clap#2634)
  • Upgrade yaml-rust from 0.3 to 0.4
  • Replaced ArgGroup::from(BTreeMap) to ArgGroup::from(yaml)
  • Replaced ArgMatches::usage with App::generate_usage
  • Replaced Arg::settings with Arg::setting(Setting1 | Setting2)
  • App and Arg now need only one lifetime
  • Removed deprecated App::with_defaults, replaced with app_from_crate
  • Removed deprecated AppSettings::PropagateGlobalValuesDown (now the default)
  • Some App functions, like App::write_help now take &mut self instead of &self
  • Error::message is now private, use Error::to_string
  • Arg::default_value_if, Arg::default_value_if_os, Arg::default_value_ifs,
    Arg::default_value_ifs_os now takes the default value parameter as an option (clap-rs/clap#1406)
  • Changed App::print_help & App::print_long_help to now return std::io::Result
  • Changed App::write_help & App::write_long_help to now return std::io::Result
  • Changed Arg::index, Arg::number_of_values, Arg::min_values, Arg::max_values to taking usize instead of u64
  • Changed Error::info to type Vec<String> instead of Option<Vec<String>>
  • Changed ArgMatches::subcommand to now return Option<(&str, &ArgMatches)>
  • Renamed ErrorKind::MissingArgumentOrSubcommand to ErrorKind::DisplayHelpOnMissingArgumentOrSubcommand
  • Renamed ErrorKind::HelpDisplayed to ErrorKind::DisplayHelp
  • Renamed ErrorKind::VersionDisplayed to ErrorKind::DisplayVersion
  • Added #[non_exhaustive] to clap::{ValueHint, ErrorKind, AppSettings, ArgSettings} (clap-rs/clap#3167)

From structopt 0.3.25

  • By default, the App isn't initialized with crate information anymore. Now opt-in via #[clap(author)], #[clap(about)], #[clap(version)] (clap-rs/clap#3034)
  • #[clap(default_value)] is replaced with #[clap(default_value_t)] (clap-rs/clap#1694)
  • Subcommands nested under subcommands now needs a #[clap(subcommand)] attribute (clap-rs/clap#2587)
  • Vec<_> and Option<Vec<_>> have changed from multiple to multiple_occurrences

On top of the clap 2 changes

Performance

From clap 2

  • Split out non-default unicode feature flag for faster builds and smaller binaries for ASCII-only CLIs.
  • Split out non-default env feature flag for faster builds and smaller binaries.
Features

From clap 2

  • Integration of structopt::StructOpt via clap::Parser (requires derive feature flag)

  • Custom help headings

    • App::help_heading (apply to all future args)
    • Arg::help_heading (apply to current arg)
    • App::subcommand_help_heading along with App::subcommand_value_name (apply to subcommands)
    • See clap-rs/clap#805
    • AppSettings::UnifiedHelpMessage is now default behaviour (clap-rs/clap#2807)
  • Deriving of ArgEnum for generating Arg::possible_values (requires derive feature flag)

  • Disable built-in help/version behavior with AppSettings::NoAutoHelp and AppSettings::NoAutoVersion

  • Change an existing arg with new builder method mut_arg (particularly helpful for --help and --version)

  • Provide extra context in long help messages (--help) with before_long_help and after_long_help (clap-rs/clap#1903)

  • Detect missing help descriptions via debug asserts by enabling AppSettings::HelpExpected

  • Aliases for short flags (clap-rs/clap#1896)

  • Validate UTF-8 values, rather than panicing during ArgMatches::value_of thanks to AppSettings::AllowInvalidUtf8ForExternalSubcommands and ArgSettings::AllowInvalidUtf8

    • Debug builds will assert when the ArgMatches calls do not match the UTF-8 setting.
    • See clap-rs/clap#751
  • clap::PossibleValue to allow

  • Allow arguments to conflict with all others via Arg::exclusive (clap-rs/clap#1583)

  • Validate arguments with a regex (required regex feature flag)

  • Arg::default_missing_value for cases like --color[=<WHEN>] (clap-rs/clap#1587)

  • clap::App::color / clap::ColorChoice to specify color setting for the app

  • Custom error reporting with App::error

  • App::debug_assert test helper

  • Replace Arg::multiple(bool) with Arg::multiple_values / Arg::multiple_occurrences

    • Positionals can be either
  • Added support for flag subcommands like pacman (clap-rs/clap#1361)

  • Partial parsing via AppSettings::IgnoreErrors (clap-rs/clap#1880)

  • Enable cmd help to print long help (--help instead of -h) with AppSettings::UseLongFormatForHelpSubcommand (clap-rs/clap#2435)

  • Allow long arg abbreviations like we do with subcommands via AppSettings::InferLongArgs (clap-rs/clap#2435)

  • Detect subcommands among positional arguments with AppSettings::SubcommandPrecedenceOverArg

  • Give completion scripts hints with Arg::value_hint (clap-rs/clap#1793)

  • Allow unsetting defaults with

  • Arg::default_value_if, Arg::default_value_if_os, Arg::default_value_ifs,
    Arg::default_value_ifs_os (clap-rs/clap#1406)

  • Interpret some env variable values as false for flags, in addition to "not-present" (clap-rs/clap#2539)

    • n, no, f, false, off, 0
  • Added arg! macro for creating an Arg from a compile-time usage parser

  • (Experimental) Busybox-like multi-call support

    • See AppSettings::Multicall behind unstable-multicall feature flag
    • See clap-rs/clap#1120
  • (Experimental) Alias an argument to anything group of arguments

    • See App::replace behind unstable-replace feature flag
    • See clap-rs#1603
  • (Experimental) Grouping of multiple values within multiple occurrences

    • See ArgMatches::grouped_values_of behind unstable-grouped feature flag
    • See clap-rs/clap#1026

From structopt 0.3.25

  • Allow defaulting with native types via new default_value_t [= <expr>] attribute (clap-rs/clap#1694)
  • New update API
  • New arg_enum attribute for integrating with ArgEnum trait

On top of the clap 2 changes

Fixes

From clap 2

  • Correctly handle colored output on Windows
  • Only generate version flags when App::version, App::long_version are set
    (see clap-rs/clap#2812)
  • General completion script improvements
  • Limited default help text wrapping to 100 when wrap_help feature is not enabled
  • Be more specific than Arg::multiple with Arg::multiple_values and Arg::multiple_occurrences
  • app_from_crate! defaults to separating multiple authors with ", "
  • Ensure all examples work
  • IgnoreCase is now unicode aware (requires unicode feature flag)
  • Always respect ColorChoice::Never, even if that means we skip colors in some cases
  • ArgMatches panics on unknown arguments
  • Gracefully handle empty authors field in Cargo.toml with app_from_crate
  • Do not show --help in cmd help with DisableHelpFlag (clap-rs/clap#3169)
  • Do not show --help in cmd help help that doesn't work (clap-rs/clap#3169)

From structopt 0.3.25

On top of the clap 2 changes

Minimum Required Rust
  • As of this release, clap requires rustc 1.54.0 or greater.

v3.0.0-rc.13

Compare Source

v3.0.0-rc.12

Compare Source

v3.0.0-rc.11

Compare Source

v3.0.0-rc.10

Compare Source

v3.0.0-rc.9

Compare Source

v3.0.0-rc.8

Compare Source

v3.0.0-rc.7

Compare Source

v3.0.0-rc.6

Compare Source

v3.0.0-rc.5

Compare Source

v3.0.0-rc.4

Compare Source

v3.0.0-rc.3

Compare Source

v3.0.0-rc.2

Compare Source

v3.0.0-rc.1

Compare Source

v3.0.0-rc.0

Compare Source

v3.0.0-beta.5

Compare Source


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot force-pushed the renovate/clap-3.x branch from 09358ec to d6f016c Compare December 2, 2021 19:03
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-beta.5 fix(deps): update rust crate clap to 3.0.0-rc.0 Dec 8, 2021
@renovate renovate bot force-pushed the renovate/clap-3.x branch from d6f016c to 47f5e80 Compare December 8, 2021 20:14
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.0 fix(deps): update rust crate clap to 3.0.0-rc.1 Dec 9, 2021
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 47f5e80 to d93b6ec Compare December 9, 2021 15:57
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.1 fix(deps): update rust crate clap to 3.0.0-rc.3 Dec 10, 2021
@renovate renovate bot force-pushed the renovate/clap-3.x branch 2 times, most recently from 096e30a to 6143a15 Compare December 10, 2021 22:42
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.3 fix(deps): update rust crate clap to 3.0.0-rc.4 Dec 10, 2021
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.4 fix(deps): update rust crate clap to 3.0.0-rc.5 Dec 15, 2021
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 6143a15 to b144322 Compare December 15, 2021 17:54
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.5 fix(deps): update rust crate clap to 3.0.0-rc.6 Dec 16, 2021
@renovate renovate bot force-pushed the renovate/clap-3.x branch from b144322 to 1d0477b Compare December 16, 2021 16:02
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.6 fix(deps): update rust crate clap to 3.0.0-rc.7 Dec 16, 2021
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 1d0477b to 8a31b5b Compare December 16, 2021 20:16
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 8a31b5b to d902f90 Compare December 23, 2021 21:16
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.7 fix(deps): update rust crate clap to 3.0.0-rc.8 Dec 23, 2021
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.8 fix(deps): update rust crate clap to 3.0.0-rc.9 Dec 27, 2021
@renovate renovate bot force-pushed the renovate/clap-3.x branch from d902f90 to baad0c0 Compare December 27, 2021 23:27
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.9 fix(deps): update rust crate clap to 3.0.0-rc.11 Dec 30, 2021
@renovate renovate bot force-pushed the renovate/clap-3.x branch from baad0c0 to 8335c36 Compare December 30, 2021 22:00
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.11 fix(deps): update rust crate clap to 3.0.0-rc.12 Dec 31, 2021
@renovate renovate bot force-pushed the renovate/clap-3.x branch 2 times, most recently from 24bcc0d to fa8c36e Compare December 31, 2021 21:39
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0-rc.12 fix(deps): update rust crate clap to 3.0.0 Dec 31, 2021
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.0 fix(deps): update rust crate clap to 3.0.1 Jan 3, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch from fa8c36e to 17dc122 Compare January 3, 2022 20:57
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.0.1 fix(deps): update rust crate clap to 3.0.2 Jan 4, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch 2 times, most recently from 976c987 to 4e42d70 Compare January 4, 2022 20:30
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 93a526a to 4e1339c Compare June 15, 2022 18:30
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.4 fix(deps): update rust crate clap to 3.2.5 Jun 15, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 4e1339c to 4965794 Compare June 21, 2022 16:58
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.5 fix(deps): update rust crate clap to 3.2.6 Jun 21, 2022
@jaysonsantos
Copy link
Owner

bors r+

bors bot added a commit that referenced this pull request Jun 22, 2022
22: fix(deps): update rust crate dirs to v4 r=jaysonsantos a=renovate[bot]

[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [dirs](https://togithub.com/soc/dirs-rs) | dependencies | major | `3.0.2` -> `4.0.0` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/jaysonsantos/kustomize-sops-rs).

23: fix(deps): update rust crate clap to 3.2.6 r=jaysonsantos a=renovate[bot]

[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [clap](https://togithub.com/clap-rs/clap) | dependencies | minor | `3.0.0-beta.4` -> `3.2.6` |

---

### Release Notes

<details>
<summary>clap-rs/clap</summary>

### [`v3.2.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;326---2022-06-21)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.5...v3.2.6)

##### Fixes

-   Don't panic when parsing `--=`

### [`v3.2.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;325---2022-06-15)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.4...v3.2.5)

##### Fixes

-   *(derive)* Fix regression with `#[clap(default_value_os_t ...)]` introduced in v3.2.3

### [`v3.2.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;324---2022-06-14)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.3...v3.2.4)

##### Fixes

-   *(derive)* Provide more clearer deprecation messages for `#[clap(parse)]` attribute ([#&#8203;3832](https://togithub.com/clap-rs/clap/issues/3832))

### [`v3.2.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;323---2022-06-14)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.2...v3.2.3)

##### Fixes

-   Moved deprecations to be behind the `deprecated` Cargo.toml feature ([#&#8203;3830](https://togithub.com/clap-rs/clap/issues/3830))
    -   For now, it is disabled by default though we are considering enabling it by
        default as we release the next major version to help draw attention to the
        deprecation migration path

### [`v3.2.2`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;322---2022-06-14)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.1...v3.2.2)

##### Fixes

-   *(derive)* Improve the highlighted code for deprecation warnings

**gated behind `unstable-v4`**

-   *(derive)* Default to `#[clap(value_parser, action)]` instead of `#[clap(parse)]` ([#&#8203;3827](https://togithub.com/clap-rs/clap/issues/3827))

### [`v3.2.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;321---2022-06-13)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.0...v3.2.1)

### [`v3.2.0`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;320---2022-06-13)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.18...v3.2.0)

##### Compatibility

MSRV is now 1.56.0 ([#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732))

Behavior

-   Defaults no longer satisfy `required` and its variants ([#&#8203;3793](https://togithub.com/clap-rs/clap/issues/3793))
-   When misusing `ArgMatches::value_of` and friends, debug asserts were turned into panics

Moving (old location deprecated)

-   `clap::{PossibleValue, ValueHint}` to `clap::builder::{PossibleValue, ValueHint}`
-   `clap::{Indices, OsValues, ValueSource, Values}` to `clap::parser::{Indices, OsValues, ValueSource, Values}`
-   `clap::ArgEnum` to `clap::ValueEnum` ([#&#8203;3799](https://togithub.com/clap-rs/clap/issues/3799))

Replaced

-   `Arg::allow_invalid_utf8` with `Arg::value_parser(value_parser!(PathBuf))` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `Arg::validator` / `Arg::validator_os` with `Arg::value_parser` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `Arg::validator_regex` with users providing their own `builder::TypedValueParser` ([#&#8203;3756](https://togithub.com/clap-rs/clap/issues/3756))
-   `Arg::forbid_empty_values` with `builder::NonEmptyStringValueParser` / `builder::PathBufValueParser` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `Arg::possible_values` with `Arg::value_parser([...])`, `builder::PossibleValuesParser`, or `builder::EnumValueParser` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `Arg::max_occurrences` with `arg.action(ArgAction::Count).value_parser(value_parser!(u8).range(..N))` for flags ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `Arg::multiple_occurrences` with `ArgAction::Append` or `ArgAction::Count` though positionals will need `Arg::multiple_values` ([#&#8203;3772](https://togithub.com/clap-rs/clap/issues/3772), [#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `Command::args_override_self` with `ArgAction::Set` ([#&#8203;2627](https://togithub.com/clap-rs/clap/issues/2627), [#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `AppSettings::NoAutoVersion` with `ArgAction` or `Command::disable_version_flag` ([#&#8203;3800](https://togithub.com/clap-rs/clap/issues/3800))
-   `AppSettings::NoHelpVersion` with `ArgAction` or `Command::disable_help_flag` / `Command::disable_help_subcommand` ([#&#8203;3800](https://togithub.com/clap-rs/clap/issues/3800))
-   `ArgMatches::{value_of, value_of_os, value_of_os_lossy, value_of_t}` with `ArgMatches::{get_one,remove_one}` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `ArgMatches::{values_of, values_of_os, values_of_os_lossy, values_of_t}` with `ArgMatches::{get_many,remove_many}` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `ArgMatches::is_valid_arg` with `ArgMatches::{try_get_one,try_get_many}` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `ArgMatches::occurrences_of` with `ArgMatches::value_source` or `ArgAction::Count` ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `ArgMatches::is_present` with `ArgMatches::contains_id` or `ArgAction::SetTrue` ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `ArgAction::StoreValue` with `ArgAction::Set` or `ArgAction::Append` ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `ArgAction::IncOccurrences` with `ArgAction::SetTrue` or `ArgAction::Count` ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   *(derive)* `#[clap(parse(...))]` replaced with: ([#&#8203;3589](https://togithub.com/clap-rs/clap/issues/3589), [#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
    -   For default parsers (no `parse` attribute), deprecation warnings can be
        silenced by opting into the new behavior by adding either `#[clap(action)]`
        or `#[clap(value_parser)]` (ie requesting the default behavior for these
        attributes).  Alternatively, the `unstable-v4` feature changes the default
        away from `parse` to `action`/`value_parser`.
    -   For `#[clap(parse(from_flag))]` replaced with `#[clap(action = ArgAction::SetTrue)]` ([#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
    -   For `#[clap(parse(from_occurrences))]` replaced with `#[clap(action = ArgAction::Count)]` though the field's type must be `u8` ([#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
    -   For `#[clap(parse(from_os_str)]` for `PathBuf`, replace it with
        `#[clap(value_parser)]` (as mentioned earlier this will call
        `value_parser!(PathBuf)` which will auto-select the right `ValueParser`
        automatically).
    -   For `#[clap(parse(try_from_str = ...)]`, replace it with `#[clap(value_parser = ...)]`
    -   For most other cases, a type implementing `TypedValueParser` will be needed and specify it with `#[clap(value_parser = ...)]`

##### Features

-   Parsed, typed arguments via `Arg::value_parser` / `ArgMatches::{get_one,get_many}` ([#&#8203;2683](https://togithub.com/clap-rs/clap/issues/2683), [#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732))
    -   Several built-in `TypedValueParser`s available with an API open for expansion
    -   `value_parser!(T)` macro for selecting a parser for a given type ([#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732)) and open to expansion via the `ValueParserFactory` trait ([#&#8203;3755](https://togithub.com/clap-rs/clap/issues/3755))
    -   `[&str]` is implicitly a value parser for possible values
    -   All `ArgMatches` getters do not assume required arguments ([#&#8203;2505](https://togithub.com/clap-rs/clap/issues/2505))
    -   Add `ArgMatches::remove_*` variants to transfer ownership
    -   Add `ArgMatches::try_*` variants to avoid panics for developer errors ([#&#8203;3621](https://togithub.com/clap-rs/clap/issues/3621))
    -   Add a `get_raw` to access the underlying `OsStr`s
    -   `PathBuf` value parsers imply `ValueHint::AnyPath` for completions ([#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732))
-   Explicit control over parsing via `Arg::action` ([#&#8203;3774](https://togithub.com/clap-rs/clap/issues/3774))
    -   `ArgAction::StoreValue`: existing `takes_value(true)` behavior
    -   `ArgAction::IncOccurrences`: existing `takes_value(false)` behavior
    -   `ArgAction::Help`: existing `--help` behavior
    -   `ArgAction::Version`: existing `--version` behavior
    -   `ArgAction::Set`: Overwrite existing values (like `Arg::multiple_occurrences` mixed with `Command::args_override_self`) ([#&#8203;3777](https://togithub.com/clap-rs/clap/issues/3777))
    -   `ArgAction::Append`: like `Arg::multiple_occurrences` ([#&#8203;3777](https://togithub.com/clap-rs/clap/issues/3777))
    -   `ArgAction::SetTrue`: Treat `--flag` as `--flag=true` ([#&#8203;3775](https://togithub.com/clap-rs/clap/issues/3775))
        -   Implies `Arg::default_value("false")` ([#&#8203;3786](https://togithub.com/clap-rs/clap/issues/3786))
        -   Parses `Arg::env` via `Arg::value_parser`
    -   `ArgAction::SetFalse`: Treat `--flag` as `--flag=false` ([#&#8203;3775](https://togithub.com/clap-rs/clap/issues/3775))
        -   Implies `Arg::default_value("true")` ([#&#8203;3786](https://togithub.com/clap-rs/clap/issues/3786))
        -   Parses `Arg::env` via `Arg::value_parser`
    -   `ArgAction::Count`: Treat `--flag --flag --flag` as `--flag=1 --flag=2 --flag=3` ([#&#8203;3775](https://togithub.com/clap-rs/clap/issues/3775))
        -   Implies `Arg::default_value("0")` ([#&#8203;3786](https://togithub.com/clap-rs/clap/issues/3786))
        -   Parses `Arg::env` via `Arg::value_parser`
-   *(derive)* Opt-in to new `Arg::value_parser` / `Arg::action` with either `#[clap(value_parser)]` ([#&#8203;3589](https://togithub.com/clap-rs/clap/issues/3589), [#&#8203;3742](https://togithub.com/clap-rs/clap/issues/3742)) / `#[clap(action)]` attributes ([#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
    -   Default `ValueParser` is determined by `value_parser!` ([#&#8203;3199](https://togithub.com/clap-rs/clap/issues/3199), [#&#8203;3496](https://togithub.com/clap-rs/clap/issues/3496))
    -   Default `ArgAction` is determine by a hard-coded lookup on the type ([#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
-   `Command::multicall` is now stable for busybox-like programs and REPLs ([#&#8203;2861](https://togithub.com/clap-rs/clap/issues/2861), [#&#8203;3684](https://togithub.com/clap-rs/clap/issues/3684))
-   `ArgMatches::{try_,}contains_id` for checking if there are values for an argument that mirrors the new `get_{one,many}` API

##### Fixes

-   Don't correct argument id in `default_value_ifs_os`([#&#8203;3815](https://togithub.com/clap-rs/clap/issues/3815))

*parser*

-   Set `ArgMatches::value_source` and `ArgMatches::occurrences_of` for external subcommands ([#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732))
-   Use value delimiter for `Arg::default_missing_values` ([#&#8203;3761](https://togithub.com/clap-rs/clap/issues/3761), [#&#8203;3765](https://togithub.com/clap-rs/clap/issues/3765))
-   Split`Arg::default_value` / `Arg::env` on value delimiters independent of whether `--` was used ([#&#8203;3765](https://togithub.com/clap-rs/clap/issues/3765))
-   Allow applying defaults to flags ([#&#8203;3294](https://togithub.com/clap-rs/clap/issues/3294), 3775)
-   Defaults no longer satisfy `required` and its variants ([#&#8203;3793](https://togithub.com/clap-rs/clap/issues/3793))

### [`v3.1.18`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3118---2022-05-10)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.17...v3.1.18)

##### Fixes

-   Fix deprecated `arg_enum!` for users migrating to clap3 ([#&#8203;3717](https://togithub.com/clap-rs/clap/issues/3717))
-   Verify all `required_unless_present_all` arguments exist
-   Verify group members exist before processing group members ([#&#8203;3711](https://togithub.com/clap-rs/clap/issues/3711))
-   *(help)* Use `...` when not enough `value_names` are supplied

**gated behind `unstable-v4`**

-   Verify `required` is not used with conditional required settings ([#&#8203;3660](https://togithub.com/clap-rs/clap/issues/3660))
-   Disallow more `value_names` than `number_of_values` ([#&#8203;2695](https://togithub.com/clap-rs/clap/issues/2695))
-   *(parser)* Assert on unknown args when using external subcommands ([#&#8203;3703](https://togithub.com/clap-rs/clap/issues/3703))
-   *(parser)* Always fill in `""` argument for external subcommands ([#&#8203;3263](https://togithub.com/clap-rs/clap/issues/3263))
-   *(derive)* Detect escaped external subcommands that look like built-in subcommands ([#&#8203;3703](https://togithub.com/clap-rs/clap/issues/3703))
-   *(derive)* Leave `Arg::id` as `verbatim` casing ([#&#8203;3282](https://togithub.com/clap-rs/clap/issues/3282))

### [`v3.1.17`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3117---2022-05-06)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.16...v3.1.17)

##### Fixes

-   Allow value names for `arg!` macro to have dashes when quoted, like longs

### [`v3.1.16`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3116---2022-05-06)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.15...v3.1.16)

##### Fixes

-   *(parser)* `Arg::exclusive` overrides `Arg::required`, like other conflicts
-   *(error)* Don't duplicate arguments in usage
-   *(error)* Don't show hidden arguments in conflict error usage
-   *(help)* New `help_template` variable `{name}` to fix problems with `{bin}`
-   *(help)* Don't wrap URLs

**gated behind `unstable-v4`**

-   Leading dashes in `Arg::long` are no longer allowed
-   *(help)* Use `Command::display_name` in the help title rather than `Command::bin_name`

### [`v3.1.15`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3115---2022-05-02)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.14...v3.1.15)

##### Fixes

-   *(error)* Render actual usage for unrecognized subcommands
-   *(multicall)* Improve bad command error
-   *(multicall)* Always require a multicall command
-   *(multicall)* Disallow arguments on multicall parent command
-   *(multicall)* More consistent with rest of clap errors

### [`v3.1.14`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3114---2022-05-01)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.13...v3.1.14)

##### Fixes

-   Panic when calling `Command::build` with a required positional argument nested several layers in subcommands

### [`v3.1.13`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3113---2022-04-30)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.12...v3.1.13)

##### Fixes

-   Help subcommand and `Command::write_help` now report required arguments in usage in more circumstances
-   Unknown subcommand for help subcommand flag now reports an error with more context
-   More details reported when using `debug` feature
-   Allow disabling `color` feature with `debug` feature enabled

### [`v3.1.12`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3112---2022-04-22)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.11...v3.1.12)

##### Fixes

-   Regression in 3.1.11 where the (output) streams were crossed

### [`v3.1.11`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3111---2022-04-22)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.10...v3.1.11)

##### Fixes

-   Implied conflicts override `Arg::required`, making the behavior consistent with how we calculate conflicts for error reporting
-   Members of a mutually exclusive `ArgGroup`  override `Arg::required`, making the behavior consistent with how we calculate conflicts for error reporting
-   `Arg::overrides_with` always override `Arg::required`, not just when the parser processes an override

### [`v3.1.10`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3110---2022-04-19)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.9...v3.1.10)

##### Features

-   Expose `Command::build` for custom help generation or other command introspection needs

### [`v3.1.9`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;319---2022-04-15)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.8...v3.1.9)

##### Fixes

-   Pin the `clap_derive` version so a compatible version is always used with `clap`

### [`v3.1.8`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;318---2022-04-01)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.7...v3.1.8)

##### Fixes

-   Add `Debug` impls to more types

### [`v3.1.7`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;317---2022-03-31)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.6...v3.1.7)

##### Fixes

-   *(derive)* Abort, rather than ignore, when deriving `ArgEnum` with non-unit unskipped variants

### [`v3.1.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;316---2022-03-07)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.5...v3.1.6)

##### Fixes

-   Don't panic when validating delimited defaults ([#&#8203;3541](https://togithub.com/clap-rs/clap/issues/3541))
-   Make it clearer that `cargo` feature is needed
-   Documentation improvements

### [`v3.1.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;315---2022-03-02)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.4...v3.1.5)

##### Fixes

-   Dependency upgrade

### [`v3.1.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;314---2022-03-02)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.3...v3.1.4)

##### Features

-   *(help)* Show `PossibleValue::help` in long help (`--help`)  **(gated behind `unstable-v4`)** ([#&#8203;3312](https://togithub.com/clap-rs/clap/issues/3312))

### [`v3.1.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;313---2022-02-28)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.2...v3.1.3)

##### Fixes

-   Don't panic when validating delimited defaults ([#&#8203;3514](https://togithub.com/clap-rs/clap/issues/3514))

### [`v3.1.2`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;312---2022-02-23)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.1...v3.1.2)

##### Fixes

-   *(derive)* Allow other attribute with a subcommand that has subcommands

##### Documentation

-   *(examples)* List example topics
-   *(derive)* Clarify syntax and relation to builder API

### [`v3.1.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3118---2022-05-10)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.0...v3.1.1)

##### Fixes

-   Fix deprecated `arg_enum!` for users migrating to clap3 ([#&#8203;3717](https://togithub.com/clap-rs/clap/issues/3717))
-   Verify all `required_unless_present_all` arguments exist
-   Verify group members exist before processing group members ([#&#8203;3711](https://togithub.com/clap-rs/clap/issues/3711))
-   *(help)* Use `...` when not enough `value_names` are supplied

**gated behind `unstable-v4`**

-   Verify `required` is not used with conditional required settings ([#&#8203;3660](https://togithub.com/clap-rs/clap/issues/3660))
-   Disallow more `value_names` than `number_of_values` ([#&#8203;2695](https://togithub.com/clap-rs/clap/issues/2695))
-   *(parser)* Assert on unknown args when using external subcommands ([#&#8203;3703](https://togithub.com/clap-rs/clap/issues/3703))
-   *(parser)* Always fill in `""` argument for external subcommands ([#&#8203;3263](https://togithub.com/clap-rs/clap/issues/3263))
-   *(derive)* Detect escaped external subcommands that look like built-in subcommands ([#&#8203;3703](https://togithub.com/clap-rs/clap/issues/3703))
-   *(derive)* Leave `Arg::id` as `verbatim` casing ([#&#8203;3282](https://togithub.com/clap-rs/clap/issues/3282))

### [`v3.1.0`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;310---2022-02-16)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.14...v3.1.0)

##### Compatibility

Changes in behavior of note that are not guaranteed to be compatible across releases:

-   *(help)* `help` subcommand shows long help like `--help`, rather than short help (`-h`), deprecated `clap::AppSettings::UseLongFormatForHelpSubcommand` ([#&#8203;3440](https://togithub.com/clap-rs/clap/issues/3440))
-   *(help)* Pacman-style subcommands are now ordered the same as usage errors ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))
-   *(help)* Pacman-style subcommands use standard alternate syntax in usage ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))

##### Deprecations

-   `clap::Command` is now preferred over `clap::App` ([#&#8203;3089](https://togithub.com/clap-rs/clap/issues/3089) in [#&#8203;3472](https://togithub.com/clap-rs/clap/issues/3472))
    -   `clap::command!` is now preferred over `clap::app_from_crate` ([#&#8203;3089](https://togithub.com/clap-rs/clap/issues/3089) in [#&#8203;3474](https://togithub.com/clap-rs/clap/issues/3474))
    -   `clap::CommandFactory::command` is now preferred over `clap::IntoApp::into_app` ([#&#8203;3089](https://togithub.com/clap-rs/clap/issues/3089) in [#&#8203;3473](https://togithub.com/clap-rs/clap/issues/3473))
-   *(help)* `help` subcommand shows long help like `--help`, rather than short help (`-h`), deprecated `clap::AppSettings::UseLongFormatForHelpSubcommand` ([#&#8203;3440](https://togithub.com/clap-rs/clap/issues/3440))
-   *(error)* Deprecate `clap::AppSettings::WaitOnError`, leaving it to the user to implement
-   *(validation)* `clap::Command::subcommand_required(true).arg_required_else_help(true)` is now preferred over `clap::AppSettings::SubcommandRequiredElseHelp` ([#&#8203;3280](https://togithub.com/clap-rs/clap/issues/3280))
-   *(builder)* `clap::AppSettings` are nearly all deprecated and replaced with builder methods and getters ([#&#8203;2717](https://togithub.com/clap-rs/clap/issues/2717))
-   *(builder)* `clap::ArgSettings` is deprecated and replaced with builder methods and getters ([#&#8203;2717](https://togithub.com/clap-rs/clap/issues/2717))
-   *(builder)* `clap::Arg::id` and `clap::ArgGroup::id` are now preferred over `clap::Arg::name` and `clap::ArgGroup::name` ([#&#8203;3335](https://togithub.com/clap-rs/clap/issues/3335))
-   *(help)* `clap::Command::next_help_heading` is now preferred over `clap::Command::help_heading` ([#&#8203;1807](https://togithub.com/clap-rs/clap/issues/1807), [#&#8203;1553](https://togithub.com/clap-rs/clap/issues/1553))
-   *(error)* `clap::error::ErrorKind` is now preferred over `clap::ErrorKind` ([#&#8203;3395](https://togithub.com/clap-rs/clap/issues/3395))
-   *(error)* `clap::Error::kind()` is now preferred over `clap::Error::kind`
-   *(error)* `clap::Error::context()` is now preferred over `clap::Error::info` ([#&#8203;2628](https://togithub.com/clap-rs/clap/issues/2628))

Note: All items deprecated in 3.0.0 are now hidden in the documentation. ([#&#8203;3458](https://togithub.com/clap-rs/clap/issues/3458))

##### Features

-   *(matches)* Add `clap::ArgMatches::value_source` to determine what insert the value ([#&#8203;1345](https://togithub.com/clap-rs/clap/issues/1345))
-   *(help)* Override derived display order with `clap::Command::next_display_order` ([#&#8203;1807](https://togithub.com/clap-rs/clap/issues/1807))
-   *(error)* Show possible values when an argument doesn't have a value ([#&#8203;3320](https://togithub.com/clap-rs/clap/issues/3320))
-   *(error)* New `clap::Error::context` API to open the door for fully-custom error messages ([#&#8203;2628](https://togithub.com/clap-rs/clap/issues/2628))
    -   *(error)* `clap::error::ErrorKind` now implements `Display`

##### Fixes

-   *(builder)* Some functions were renamed for consistency and fixing spelling issues
-   *(builder)* Allow `clap::Command::color` to override previous calls ([#&#8203;3449](https://togithub.com/clap-rs/clap/issues/3449))
-   *(parse)* Propagate globals with multiple subcommands ([#&#8203;3428](https://togithub.com/clap-rs/clap/issues/3428))
-   *(validation)* Give `ArgRequiredElseHelp` precedence over `SubcommandRequired` ([#&#8203;3456](https://togithub.com/clap-rs/clap/issues/3456))
-   *(validation)* Default values no longer count as "present" for conflicts, requires, `clap::Command::arg_required_else_help`, etc ([#&#8203;3076](https://togithub.com/clap-rs/clap/issues/3076), [#&#8203;1264](https://togithub.com/clap-rs/clap/issues/1264))
-   *(assert)* Report invalid defaults ([#&#8203;3202](https://togithub.com/clap-rs/clap/issues/3202))
-   *(help)* Clarify how to handle `-h` conflicts ([#&#8203;3403](https://togithub.com/clap-rs/clap/issues/3403))
-   *(help)* Make it easier to debug the addition of help flags ([#&#8203;3425](https://togithub.com/clap-rs/clap/issues/3425))
-   *(help)* Pacman-style subcommands are now separated with spaces ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))
-   *(help)* Pacman-style subcommands are now ordered the same as usage errors ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))
-   *(help)* Pacman-style subcommands use standard alternate syntax in usage ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))
-   *(error)* Be consistent in showing of required attributes between errors / usage ([#&#8203;3390](https://togithub.com/clap-rs/clap/issues/3390))
-   *(error)* Show user's order of possible values, like in `--help` ([#&#8203;1549](https://togithub.com/clap-rs/clap/issues/1549))
-   *(error)* Allow customizing error type in `clap::error::Result` ([#&#8203;3395](https://togithub.com/clap-rs/clap/issues/3395))

##### Performance

-   *(error)* Reduced stack size of `clap::Error` ([#&#8203;3395](https://togithub.com/clap-rs/clap/issues/3395))

##### Documentation

-   *(builder)* Correct data take accepted for `clap::Arg::validator`
-   *(derive)* Clarify `parse` attribute
-   *(tutorial)* Demonstrate custom parsing
-   *(example)* Consistently list out required feature flags ([#&#8203;3448](https://togithub.com/clap-rs/clap/issues/3448))

### [`v3.0.14`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3014---2022-02-01)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.13...v3.0.14)

##### Features

-   Added `ArgMatches::args_present()` to check if any args are present
-   Added `Error::kind()` as we work to deprecate direct member access for `Error`
-   Added `App::get_version`
-   Added `App::get_long_version`
-   Added `App::get_author`
-   Added `App::get_subcommand_help_heading`
-   Added `App::get_subcommand_value_name`
-   Added `App::get_after_help`
-   Added `App::get_after_long_help`

##### Performance

-   Misc binary size reductions

### [`v3.0.13`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3013---2022-01-26)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.12...v3.0.13)

##### Fixes

-   Show optional flag values wrapped in `[]`

### [`v3.0.12`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3012---2022-01-24)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.11...v3.0.12)

##### Features

-   *(derive)* Support for `default_value_os_t`

### [`v3.0.11`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3011---2022-01-24)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.10...v3.0.11)

##### Fixes

-   Ensure conflicts work when they target a group with a default value

### [`v3.0.10`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3010---2022-01-18)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.9...v3.0.10)

##### Fixes

-   Resolve `panic!` from v3.0.8 when using `global_setting(PropagateVersion)`.

### [`v3.0.9`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;309---2022-01-17)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.8...v3.0.9)

##### Features

-   Added `App::find_subcommand_mut`

### [`v3.0.8`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;308---2022-01-17)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.7...v3.0.8)

##### Fixes

-   Respected `DisableColoredHelp` on `cmd help help`
-   Provide a little more context when completing arguments for `cmd help`
-   Provide more context for some asserts
-   Small documentation improvements

### [`v3.0.7`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;307---2022-01-12)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.6...v3.0.7)

##### Fixes

-   Shift more asserts from parsing to `App` building (ie will now run in `App::debug_assert`)

**derive**

-   Documentation fixes

### [`v3.0.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;306---2022-01-10)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.5...v3.0.6)

##### Fixes

**derive**

-   Don't assume user does `use clap::ArgEnum` ([#&#8203;3277](https://togithub.com/clap-rs/clap/issues/3277))
-   Documentation fixes

### [`v3.0.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;305---2022-01-05)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.4...v3.0.5)

##### Fixes

-   Provide hack to workaround [inability to detect external subcommands aliasing when escaped](https://togithub.com/clap-rs/clap/issues/3263) ([#&#8203;3264](https://togithub.com/clap-rs/clap/issues/3264))

**docs:**

-   Cleaned up code blocks in tutorials ([#&#8203;3261](https://togithub.com/clap-rs/clap/issues/3261))
-   Clean up quotes in `ArgMatches` asserts
-   List correct replacement for deprecated `Parser::from_clap` ([#&#8203;3257](https://togithub.com/clap-rs/clap/issues/3257))

### [`v3.0.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;304---2022-01-04)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.3...v3.0.4)

##### Features

-   For very limited cases, like `cargo`, expose `ArgMatches::is_valid_arg` to avoid panicing on undefined arguments

### [`v3.0.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;303---2022-01-04)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.2...v3.0.3)

##### Fixes

-   Specify cause of debug assert failure

### [`v3.0.2`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;302---2022-01-04)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.1...v3.0.2)

##### Fixes

-   Ignore `Last` when checking hyphen values (see [#&#8203;3249](https://togithub.com/clap-rs/clap/issues/3249) for details)
-   Help catch bugs with `#[must_use]`

### [`v3.0.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3014---2022-02-01)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0...v3.0.1)

##### Features

-   Added `ArgMatches::args_present()` to check if any args are present
-   Added `Error::kind()` as we work to deprecate direct member access for `Error`
-   Added `App::get_version`
-   Added `App::get_long_version`
-   Added `App::get_author`
-   Added `App::get_subcommand_help_heading`
-   Added `App::get_subcommand_value_name`
-   Added `App::get_after_help`
-   Added `App::get_after_long_help`

##### Performance

-   Misc binary size reductions

### [`v3.0.0`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;300---2021-12-31)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.13...v3.0.0)

**Note:** clap v3 has been in development for several years and has changed
hands multiple times.  Unfortunately, our changelog might be incomplete,
whether in changes or their motivation.

##### Highlights

A special thanks to the maintainers, contributors, beta users, and sponsors who
have helped along this journey, especially kbknapp.

**[StructOpt](https://docs.rs/structopt/) Integration**

[StructOpt](https://docs.rs/structopt/) provides a serde-like declarative
approach to defining your parser.  The main benefits we've seen so far from integrating are:

-   Tighter feedback between the design of clap and the derives
-   More universal traits.  Crates exist for common CLI patterns
    ([example](https://togithub.com/rust-cli/clap-verbosity-flag))
    and we've re-designed the `StructOpt` traits so crates built on clap3 can be
    reused not just with other derives but also people using the builder API.
    People can even hand implement these so people using the builder API won't
    have the pay the cost for derives.

**Custom Help Headings**

Previously, clap automatically grouped arguments in the help as either
`ARGS`, `FLAGS`, `OPTIONS`, and `SUBCOMMANDS`.

You can now override the default group with `Arg::help_heading` and
`App::subcommand_help_heading`.  To apply a heading to a series of arguments,
you can set `App::help_heading`.

**Deprecations**

While a lot of deprecations have been added to clean up the API (overloaded
meaning of `Arg::multiple`) or make things more consistent, some particular
highlights are:

-   `clap_app!` has been deprecated in favor of the builder API with `arg!` ([clap-rs/clap#&#8203;2835](https://togithub.com/clap-rs/clap/issues/2835))
-   `Arg::from_usage` has been deprecated in favor of `arg!` ([clap-rs/clap#&#8203;3087](https://togithub.com/clap-rs/clap/issues/3087))
    -   [Porting example](https://togithub.com/clap-rs/clap/commit/4c4a2b86a08ef9e2d63010aab4909dd5a013dfb0)
-   The YAML API has been deprecated in favor the builder or derive APIs ([clap-rs/clap#&#8203;3087](https://togithub.com/clap-rs/clap/issues/3087))

##### Migrating

**From clap v2**

1.  Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
2.  Update your dependency
    1.  *If you use `no-default-features`:* add the `std` feature
3.  Resolve compiler errors
4.  Resolve behavior changes
    1.  Refactor your `App` creation to a function and add a test similar to the one below, resolving any of its assertions
    2.  Look over the "subtle changes" under BREAKING CHANGES
    3.  *If using builder:* test your application under various circumstances to see if `ArgMatches` asserts regarding `AllowInvalidUtf8`.
5.  *At your leisure:* resolve deprecation notices

Example test:

```rust
fn app() -> clap::App<'static> {
    ...
}

#[test]
fn verify_app() {
    app().debug_assert();
}
```

**From structopt 0.3.25**

1.  Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
2.  Replace your dependency from `structopt = "..."` to `clap = { version = "3.0", features = ["derive"] }`
    1.  *If you use `no-default-features`:* add the `std` feature
3.  Resolve compiler errors, including
    1.  Update your `use` statements from `structopt` and `structopt::clap` to `clap`
4.  Resolve behavior changes
    1.  Add a test similar to the one below, resolving any of its assertions
    2.  Look over the "subtle changes" under BREAKING CHANGES
5.  *At your leisure:* resolve deprecation notices

Example test:

```rust
#[derive(clap::StructOpt)]
struct Args {
    ...
}

#[test]
fn verify_app() {
    use clap::IntoApp;
    Args::into_app().debug_assert()
}
```

**From clap v3.0.0-beta.5**

1.  Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
2.  Update your dependency
    1.  Add in `derive`, `env`, `cargo`, or `unicode` feature flags as needed
3.  Resolve compiler errors
    1.  *If you use `yaml`, `clap_app!`, or usage parser:* revert any changes you made for clap3
    2.  Change `Arg::about` `Arg::long_about` back to `help` and `long_help` and change `PossibleValue::about` to `help` ([clap-rs/clap#&#8203;3075](https://togithub.com/clap-rs/clap/issues/3075))
    3.  Change `AppSettings::HelpRequired` to `AppSettings::HelpExpected`
    4.  Change `PossibleValue::hidden` to `PossibleValue::hide`
    5.  Change `App::subcommand_placeholder` to `App::subcommand_value_name` / `App::subcommand_help_heading`
4.  Resolve behavior changes
    1.  Add the above listed test appropriate for your application and resolve any problems it reports
    2.  *If using `derive`:* see the structopt breaking changes section for `Vec` changes
    3.  *If using builder:* test your application under various circumstances to see if `ArgMatches` asserts regarding `AllowInvalidUtf8`.
5.  *At your leisure:* resolve deprecation notices

##### BREAKING CHANGES

**From clap 2**

Subtle changes (i.e. compiler won't catch):

-   `AppSettings::UnifiedHelpMessage` is now default behaviour
    -   `{flags}` and `{unified}` will assert if present in `App::help_template`
    -   See [clap-rs/clap#&#8203;2807](https://togithub.com/clap-rs/clap/issues/2807)
-   `AppSettings::EnableColoredHelp` is now the default behavior but can be
    opted-out with `AppSettings::DisableColoredHelp`
    ([clap-rs/clap#&#8203;2806](https://togithub.com/clap-rs/clap/issues/2806))
-   `App::override_usage` no longer implies a leading `\t`, allowing multi lined usages
-   `Arg::require_equals` no longer implies `ArgSettings::ForbidEmptyValues` ([#&#8203;2233](https://togithub.com/clap-rs/clap/issues/2233))
-   `Arg::require_delimiter` no longer implies `ArgSettings::TakesValue` and `ArgSettings::UseValueDelimiter` ([#&#8203;2233](https://togithub.com/clap-rs/clap/issues/2233))
-   `Arg::env`, `Arg::env_os`, `Arg::last`, `Arg::require_equals`, `Arg::allow_hyphen_values`,
    `Arg::hide_possible_values`, `Arg::hide_default_value`, `Arg::hide_env_values`,
    `Arg::case_insensitive` and `Arg::multiple_values` no longer imply `ArgSettings::TakesValue` ([#&#8203;2233](https://togithub.com/clap-rs/clap/issues/2233))
-   `ArgMatches::is_present` no longer checks subcommand names
-   Some env variable values are now considered false for flags, not just "not-present" ([clap-rs/clap#&#8203;2539](https://togithub.com/clap-rs/clap/issues/2539))
-   Changed `...`s meaning in usage parser.  Before, it always meant `multiple` which is still true for `--option [val]...`.  Now `[name]... --option [val]` results in `ArgSettings::MultipleOccurrences`.
-   Usage exit code changed from `1` to `2` ([clap-rs/clap#&#8203;1327](https://togithub.com/clap-rs/clap/issues/1327))
-   Reject `--foo=bar` when `takes_value(false)` ([clap-rs/clap#&#8203;1543](https://togithub.com/clap-rs/clap/issues/1543))
-   No longer accept an arbitrary number of `-` for long arguments (`-----long`)

Easier to catch changes:

-   When using `no-default-features`, you now have to specify the `std` feature (reserved for future work)
-   Gated env support behind `env` feature flag
    -   Impacts `Arg::env`, `Arg::env_os`, `Arg::hide_env_values`, `ArgSettings::HideEnvValues`
    -   See [clap-rs/clap#&#8203;2694](https://togithub.com/clap-rs/clap/pull/2694)
-   Gated crate information behind `cargo` feature flag
    -   Impacts `crate_name!`, `crate_version!`, `crate_authors!`, `crate_description!`, `app_from_crate!`
-   `AppSettings::StrictUtf8` is now default behaviour and asserts if
    `AppSettings::AllowInvalidUtf8ForExternalSubcommands` and
    `ArgSettings::AllowInvalidUtf8` and `ArgMatches::value_of_os` aren't used
    together
    -   `AppSettings::AllowInvalidUtf8` has been removed
    -   [clap-rs/clap#&#8203;751](https://togithub.com/clap-rs/clap/issues/751)
-   `Arg::short` and `Arg::value_delimiter` now take a `char` instead of a `&str`
-   `ArgMatches` panics on unknown arguments
-   Removed `VersionlessSubcommands`, making it the default (see [clap-rs/clap#&#8203;2812](https://togithub.com/clap-rs/clap/issues/2812))
-   Completion generation has been split out into [clap_complete](./clap_complete).
-   Removed `ArgSettings::EmptyValues` in favor of `ArgSettings::ForbidEmptyValues`
-   Validator signatures have been loosed:
    -   `Arg::validator` now takes first argument as `Fn(&str) -> Result<O, E: ToString>` instead of
        `Fn(String) -> Result<(), String>`
    -   `Arg::validator_os` now takes first argument as `Fn(&OsStr) -> Result<O, OsString>` instead of
        `Fn(&OsStr) -> Result<(), OsString>`
-   `Arg::value_name` now sets, rather than appends (see [clap-rs/clap#&#8203;2634](https://togithub.com/clap-rs/clap/issues/2634))
-   Upgrade `yaml-rust` from 0.3 to 0.4
-   Replaced `ArgGroup::from(BTreeMap)` to `ArgGroup::from(yaml)`
-   Replaced `ArgMatches::usage` with `App::generate_usage`
-   Replaced `Arg::settings` with `Arg::setting(Setting1 | Setting2)`
-   `App` and `Arg` now need only one lifetime
-   Removed deprecated `App::with_defaults`, replaced with `app_from_crate`
-   Removed deprecated `AppSettings::PropagateGlobalValuesDown` (now the default)
-   Some `App` functions, like `App::write_help` now take `&mut self` instead of `&self`
-   `Error::message` is now private, use `Error::to_string`
-   `Arg::default_value_if`, `Arg::default_value_if_os`, `Arg::default_value_ifs`,
    `Arg::default_value_ifs_os` now takes the default value parameter as an option ([clap-rs/clap#&#8203;1406](https://togithub.com/clap-rs/clap/issues/1406))
-   Changed `App::print_help` & `App::print_long_help` to now return `std::io::Result`
-   Changed `App::write_help` & `App::write_long_help` to now return `std::io::Result`
-   Changed `Arg::index`, `Arg::number_of_values`, `Arg::min_values`, `Arg::max_values` to taking `usize` instead of u64
-   Changed `Error::info` to type `Vec<String>` instead of `Option<Vec<String>>`
-   Changed `ArgMatches::subcommand` to now return `Option<(&str, &ArgMatches)>`
-   Renamed `ErrorKind::MissingArgumentOrSubcommand` to `ErrorKind::DisplayHelpOnMissingArgumentOrSubcommand`
-   Renamed `ErrorKind::HelpDisplayed` to `ErrorKind::DisplayHelp`
-   Renamed `ErrorKind::VersionDisplayed` to `ErrorKind::DisplayVersion`
-   Added `#[non_exhaustive]` to `clap::{ValueHint, ErrorKind, AppSettings, ArgSettings}` ([clap-rs/clap#&#8203;3167](https://togithub.com/clap-rs/clap/pull/3167))

**From structopt 0.3.25**

-   By default, the `App` isn't initialized with crate information anymore.  Now opt-in via `#[clap(author)]`, `#[clap(about)]`, `#[clap(version)]` ([clap-rs/clap#&#8203;3034](https://togithub.com/clap-rs/clap/issues/3034))
-   `#[clap(default_value)]` is replaced with `#[clap(default_value_t)]` ([clap-rs/clap#&#8203;1694](https://togithub.com/clap-rs/clap/issues/1694))
-   Subcommands nested under subcommands now needs a `#[clap(subcommand)]` attribute ([clap-rs/clap#&#8203;2587](https://togithub.com/clap-rs/clap/pull/2587))
-   `Vec<_>` and `Option<Vec<_>>` have changed from `multiple` to `multiple_occurrences`

On top of the clap 2 changes

##### Performance

**From clap 2**

-   Split out non-default `unicode` feature flag for faster builds and smaller binaries for ASCII-only CLIs.
-   Split out non-default `env` feature flag  for faster builds and smaller binaries.

##### Features

**From clap 2**

-   Integration of `structopt::StructOpt` via `clap::Parser` (requires `derive` feature flag)

-   Custom help headings
    -   `App::help_heading` (apply to all future args)
    -   `Arg::help_heading` (apply to current arg)
    -   `App::subcommand_help_heading` along with `App::subcommand_value_name` (apply to subcommands)
    -   See [clap-rs/clap#&#8203;805](https://togithub.com/clap-rs/clap/issues/805)
    -   `AppSettings::UnifiedHelpMessage` is now default behaviour ([clap-rs/clap#&#8203;2807](https://togithub.com/clap-rs/clap/issues/2807))

-   Deriving of `ArgEnum` for generating `Arg::possible_values` (requires `derive` feature flag)

-   Disable built-in help/version behavior with `AppSettings::NoAutoHelp` and `AppSettings::NoAutoVersion`

-   Change an existing arg with new builder method `mut_arg` (particularly helpful for `--help` and `--version`)

-   Provide extra context in long help messages (`--help`) with `before_long_help` and `after_long_help` ([clap-rs/clap#&#8203;1903](https://togithub.com/clap-rs/clap/issues/1903))

-   Detect missing help descriptions via debug asserts by enabling `AppSettings::HelpExpected`

-   Aliases for short flags ([clap-rs/clap#&#8203;1896](https://togithub.com/clap-rs/clap/issues/1896))

-   Validate UTF-8 values, rather than panicing during `ArgMatches::value_of` thanks to `AppSettings::AllowInvalidUtf8ForExternalSubcommands` and `ArgSettings::AllowInvalidUtf8`
    -   Debug builds will assert when the `ArgMatches` calls do not match the UTF-8 setting.
    -   See [clap-rs/clap#&#8203;751](https://togithub.com/clap-rs/clap/issues/751)

-   `clap::PossibleValue` to allow
    -   Hiding ([clap-rs/clap#&#8203;2756](https://togithub.com/clap-rs/clap/issues/2756))
    -   Completion help for possible values for args ([clap-rs/clap#&#8203;2731](https://togithub.com/clap-rs/clap/issues/2731))

-   Allow arguments to conflict with all others via `Arg::exclusive` ([clap-rs/clap#&#8203;1583](https://togithub.com/clap-rs/clap/issues/1583))

-   Validate arguments with a regex (required `regex` feature flag)
    -   See [clap-rs/clap](https://togithub.com/clap-rs/clap/issues/1968)

-   `Arg::default_missing_value` for cases like `--color[=<WHEN>]` ([clap-rs/clap#&#8203;1587](https://togithub.com/clap-rs/clap/pull/1587))

-   `clap::App::color` / `clap::ColorChoice` to specify color setting for the app

-   Custom error reporting with `App::error`

-   `App::debug_assert` test helper

-   Replace `Arg::multiple(bool)` with `Arg::multiple_values` / `Arg::multiple_occurrences`
    -   Positionals can be either

-   Added support for flag subcommands like pacman ([clap-rs/clap#&#8203;1361](https://togithub.com/clap-rs/clap/issues/1361))

-   Partial parsing via `AppSettings::IgnoreErrors` ([clap-rs/clap#&#8203;1880](https://togithub.com/clap-rs/clap/issues/1880))

-   Enable `cmd help` to print long help (`--help` instead of `-h`) with `AppSettings::UseLongFormatForHelpSubcommand` ([clap-rs/clap#&#8203;2435](https://togithub.com/clap-rs/clap/issues/2435))

-   Allow long arg abbreviations like we do with subcommands via `AppSettings::InferLongArgs` ([clap-rs/clap#&#8203;2435](https://togithub.com/clap-rs/clap/issues/2435))

-   Detect subcommands among positional arguments with `AppSettings::SubcommandPrecedenceOverArg`

-   Give completion scripts hints with `Arg::value_hint` ([clap-rs/clap#&#8203;1793](https://togithub.com/clap-rs/clap/pull/1793))

-   Allow unsetting defaults with

-   `Arg::default_value_if`, `Arg::default_value_if_os`, `Arg::default_value_ifs`,
    `Arg::default_value_ifs_os` ([clap-rs/clap#&#8203;1406](https://togithub.com/clap-rs/clap/issues/1406))

-   Interpret some env variable values as `false` for flags, in addition to "not-present" ([clap-rs/clap#&#8203;2539](https://togithub.com/clap-rs/clap/issues/2539))
    -   `n`, `no`, `f`, `false`, `off`, `0`

-   Added `arg!` macro for creating an `Arg` from a compile-time usage parser

-   *(Experimental)* Busybox-like multi-call support
    -   See `AppSettings::Multicall` behind `unstable-multicall` feature flag
    -   See [clap-rs/clap#&#8203;1120](https://togithub.com/clap-rs/clap/issues/1120)

-   *(Experimental)* Alias an argument to anything group of arguments
    -   See `App::replace` behind `unstable-replace` feature flag
    -   See [clap-rs#&#8203;1603](https://togithub.com/clap-rs/clap/issues/1603)

-   *(Experimental)* Grouping of multiple values within multiple occurrences
    -   See `ArgMatches::grouped_values_of` behind `unstable-grouped` feature flag
    -   See [clap-rs/clap#&#8203;1026](https://togithub.com/clap-rs/clap/issues/1026)

**From structopt 0.3.25**

-   Allow defaulting with native types via new `default_value_t [= <expr>]` attribute ([clap-rs/clap#&#8203;1694](https://togithub.com/clap-rs/clap/issues/1694))
-   New `update` API
-   New `arg_enum` attribute for integrating with `ArgEnum` trait

On top of the clap 2 changes

##### Fixes

**From clap 2**

-   Correctly handle colored output on Windows
-   Only generate version flags when `App::version`, `App::long_version` are set
    (see [clap-rs/clap#&#8203;2812](https://togithub.com/clap-rs/clap/issues/2812))
-   General completion script improvements
-   Limited default help text wrapping to 100 when `wrap_help` feature is not enabled
-   Be more specific than `Arg::multiple` with `Arg::multiple_values` and `Arg::multiple_occurrences`
-   `app_from_crate!` defaults to separating multiple authors with `", "`
-   Ensure all examples work
-   `IgnoreCase` is now unicode aware (requires `unicode` feature flag)
-   Always respect `ColorChoice::Never`, even if that means we skip colors in some cases
-   `ArgMatches` panics on unknown arguments
-   Gracefully handle empty `authors` field in `Cargo.toml` with `app_from_crate`
-   Do not show `--help` in `cmd help` with `DisableHelpFlag` ([clap-rs/clap#&#8203;3169](https://togithub.com/clap-rs/clap/pull/3169))
-   Do not show `--help` in `cmd help help` that doesn't work ([clap-rs/clap#&#8203;3169](https://togithub.com/clap-rs/clap/pull/3169))

**From structopt 0.3.25**

-   Support `SubcommandsNegateReqs` by allowing required `Option<_>`s ([clap-rs/clap#&#8203;2255](https://togithub.com/clap-rs/clap/issues/2255))
-   Infer `AllowInvalidUtf8` based on parser ([clap-rs/clap#&#8203;751](https://togithub.com/clap-rs/clap/issues/2255))
-   Gracefully handle empty `authors` field in `Cargo.toml`
-   Don't panic with `default_value_os` but treat it like `default_value` ([clap-rs/clap#&#8203;3031](https://togithub.com/clap-rs/clap/issues/3031))
-   When using `flatten` and `subcommand`, ensure our doc comment always overrides the nested container's doc comment, whether it has only `about` or `about` and `long_about` ([clap-rs/clap#&#8203;3175](]https://togithub.com/clap-rs/clap/pull/3175))

On top of the clap 2 changes

##### Minimum Required Rust

-   As of this release, `clap` requires `rustc 1.54.0` or greater.

### [`v3.0.0-rc.13`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.12...v3.0.0-rc.13)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.12...v3.0.0-rc.13)

### [`v3.0.0-rc.12`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.11...v3.0.0-rc.12)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.11...v3.0.0-rc.12)

### [`v3.0.0-rc.11`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.10...v3.0.0-rc.11)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.10...v3.0.0-rc.11)

### [`v3.0.0-rc.10`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.9...v3.0.0-rc.10)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.9...v3.0.0-rc.10)

### [`v3.0.0-rc.9`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.8...v3.0.0-rc.9)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.8...v3.0.0-rc.9)

### [`v3.0.0-rc.8`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.7...v3.0.0-rc.8)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.7...v3.0.0-rc.8)

### [`v3.0.0-rc.7`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.6...v3.0.0-rc.7)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.6...v3.0.0-rc.7)

### [`v3.0.0-rc.6`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.5...v3.0.0-rc.6)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.5...v3.0.0-rc.6)

### [`v3.0.0-rc.5`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.4...v3.0.0-rc.5)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.4...v3.0.0-rc.5)

### [`v3.0.0-rc.4`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.3...v3.0.0-rc.4)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.3...v3.0.0-rc.4)

### [`v3.0.0-rc.3`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.2...v3.0.0-rc.3)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.2...v3.0.0-rc.3)

### [`v3.0.0-rc.2`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.1...v3.0.0-rc.2)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.1...v3.0.0-rc.2)

### [`v3.0.0-rc.1`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.0...v3.0.0-rc.1)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.0...v3.0.0-rc.1)

### [`v3.0.0-rc.0`](https://togithub.com/clap-rs/clap/compare/v3.0.0-beta.5...v3.0.0-rc.0)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-beta.5...v3.0.0-rc.0)

### [`v3.0.0-beta.5`](https://togithub.com/clap-rs/clap/compare/v3.0.0-beta.4...v3.0.0-beta.5)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-beta.4...v3.0.0-beta.5)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/jaysonsantos/kustomize-sops-rs).

Co-authored-by: Renovate Bot <[email protected]>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@bors
Copy link

bors bot commented Jun 22, 2022

This PR was included in a batch that timed out, it will be automatically retried

bors bot added a commit that referenced this pull request Jun 23, 2022
23: fix(deps): update rust crate clap to 3.2.6 r=jaysonsantos a=renovate[bot]

[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [clap](https://togithub.com/clap-rs/clap) | dependencies | minor | `3.0.0-beta.4` -> `3.2.6` |

---

### Release Notes

<details>
<summary>clap-rs/clap</summary>

### [`v3.2.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;326---2022-06-21)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.5...v3.2.6)

##### Fixes

-   Don't panic when parsing `--=`

### [`v3.2.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;325---2022-06-15)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.4...v3.2.5)

##### Fixes

-   *(derive)* Fix regression with `#[clap(default_value_os_t ...)]` introduced in v3.2.3

### [`v3.2.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;324---2022-06-14)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.3...v3.2.4)

##### Fixes

-   *(derive)* Provide more clearer deprecation messages for `#[clap(parse)]` attribute ([#&#8203;3832](https://togithub.com/clap-rs/clap/issues/3832))

### [`v3.2.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;323---2022-06-14)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.2...v3.2.3)

##### Fixes

-   Moved deprecations to be behind the `deprecated` Cargo.toml feature ([#&#8203;3830](https://togithub.com/clap-rs/clap/issues/3830))
    -   For now, it is disabled by default though we are considering enabling it by
        default as we release the next major version to help draw attention to the
        deprecation migration path

### [`v3.2.2`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;322---2022-06-14)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.1...v3.2.2)

##### Fixes

-   *(derive)* Improve the highlighted code for deprecation warnings

**gated behind `unstable-v4`**

-   *(derive)* Default to `#[clap(value_parser, action)]` instead of `#[clap(parse)]` ([#&#8203;3827](https://togithub.com/clap-rs/clap/issues/3827))

### [`v3.2.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;321---2022-06-13)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.0...v3.2.1)

### [`v3.2.0`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;320---2022-06-13)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.18...v3.2.0)

##### Compatibility

MSRV is now 1.56.0 ([#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732))

Behavior

-   Defaults no longer satisfy `required` and its variants ([#&#8203;3793](https://togithub.com/clap-rs/clap/issues/3793))
-   When misusing `ArgMatches::value_of` and friends, debug asserts were turned into panics

Moving (old location deprecated)

-   `clap::{PossibleValue, ValueHint}` to `clap::builder::{PossibleValue, ValueHint}`
-   `clap::{Indices, OsValues, ValueSource, Values}` to `clap::parser::{Indices, OsValues, ValueSource, Values}`
-   `clap::ArgEnum` to `clap::ValueEnum` ([#&#8203;3799](https://togithub.com/clap-rs/clap/issues/3799))

Replaced

-   `Arg::allow_invalid_utf8` with `Arg::value_parser(value_parser!(PathBuf))` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `Arg::validator` / `Arg::validator_os` with `Arg::value_parser` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `Arg::validator_regex` with users providing their own `builder::TypedValueParser` ([#&#8203;3756](https://togithub.com/clap-rs/clap/issues/3756))
-   `Arg::forbid_empty_values` with `builder::NonEmptyStringValueParser` / `builder::PathBufValueParser` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `Arg::possible_values` with `Arg::value_parser([...])`, `builder::PossibleValuesParser`, or `builder::EnumValueParser` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `Arg::max_occurrences` with `arg.action(ArgAction::Count).value_parser(value_parser!(u8).range(..N))` for flags ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `Arg::multiple_occurrences` with `ArgAction::Append` or `ArgAction::Count` though positionals will need `Arg::multiple_values` ([#&#8203;3772](https://togithub.com/clap-rs/clap/issues/3772), [#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `Command::args_override_self` with `ArgAction::Set` ([#&#8203;2627](https://togithub.com/clap-rs/clap/issues/2627), [#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `AppSettings::NoAutoVersion` with `ArgAction` or `Command::disable_version_flag` ([#&#8203;3800](https://togithub.com/clap-rs/clap/issues/3800))
-   `AppSettings::NoHelpVersion` with `ArgAction` or `Command::disable_help_flag` / `Command::disable_help_subcommand` ([#&#8203;3800](https://togithub.com/clap-rs/clap/issues/3800))
-   `ArgMatches::{value_of, value_of_os, value_of_os_lossy, value_of_t}` with `ArgMatches::{get_one,remove_one}` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `ArgMatches::{values_of, values_of_os, values_of_os_lossy, values_of_t}` with `ArgMatches::{get_many,remove_many}` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `ArgMatches::is_valid_arg` with `ArgMatches::{try_get_one,try_get_many}` ([#&#8203;3753](https://togithub.com/clap-rs/clap/issues/3753))
-   `ArgMatches::occurrences_of` with `ArgMatches::value_source` or `ArgAction::Count` ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `ArgMatches::is_present` with `ArgMatches::contains_id` or `ArgAction::SetTrue` ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `ArgAction::StoreValue` with `ArgAction::Set` or `ArgAction::Append` ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   `ArgAction::IncOccurrences` with `ArgAction::SetTrue` or `ArgAction::Count` ([#&#8203;3797](https://togithub.com/clap-rs/clap/issues/3797))
-   *(derive)* `#[clap(parse(...))]` replaced with: ([#&#8203;3589](https://togithub.com/clap-rs/clap/issues/3589), [#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
    -   For default parsers (no `parse` attribute), deprecation warnings can be
        silenced by opting into the new behavior by adding either `#[clap(action)]`
        or `#[clap(value_parser)]` (ie requesting the default behavior for these
        attributes).  Alternatively, the `unstable-v4` feature changes the default
        away from `parse` to `action`/`value_parser`.
    -   For `#[clap(parse(from_flag))]` replaced with `#[clap(action = ArgAction::SetTrue)]` ([#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
    -   For `#[clap(parse(from_occurrences))]` replaced with `#[clap(action = ArgAction::Count)]` though the field's type must be `u8` ([#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
    -   For `#[clap(parse(from_os_str)]` for `PathBuf`, replace it with
        `#[clap(value_parser)]` (as mentioned earlier this will call
        `value_parser!(PathBuf)` which will auto-select the right `ValueParser`
        automatically).
    -   For `#[clap(parse(try_from_str = ...)]`, replace it with `#[clap(value_parser = ...)]`
    -   For most other cases, a type implementing `TypedValueParser` will be needed and specify it with `#[clap(value_parser = ...)]`

##### Features

-   Parsed, typed arguments via `Arg::value_parser` / `ArgMatches::{get_one,get_many}` ([#&#8203;2683](https://togithub.com/clap-rs/clap/issues/2683), [#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732))
    -   Several built-in `TypedValueParser`s available with an API open for expansion
    -   `value_parser!(T)` macro for selecting a parser for a given type ([#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732)) and open to expansion via the `ValueParserFactory` trait ([#&#8203;3755](https://togithub.com/clap-rs/clap/issues/3755))
    -   `[&str]` is implicitly a value parser for possible values
    -   All `ArgMatches` getters do not assume required arguments ([#&#8203;2505](https://togithub.com/clap-rs/clap/issues/2505))
    -   Add `ArgMatches::remove_*` variants to transfer ownership
    -   Add `ArgMatches::try_*` variants to avoid panics for developer errors ([#&#8203;3621](https://togithub.com/clap-rs/clap/issues/3621))
    -   Add a `get_raw` to access the underlying `OsStr`s
    -   `PathBuf` value parsers imply `ValueHint::AnyPath` for completions ([#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732))
-   Explicit control over parsing via `Arg::action` ([#&#8203;3774](https://togithub.com/clap-rs/clap/issues/3774))
    -   `ArgAction::StoreValue`: existing `takes_value(true)` behavior
    -   `ArgAction::IncOccurrences`: existing `takes_value(false)` behavior
    -   `ArgAction::Help`: existing `--help` behavior
    -   `ArgAction::Version`: existing `--version` behavior
    -   `ArgAction::Set`: Overwrite existing values (like `Arg::multiple_occurrences` mixed with `Command::args_override_self`) ([#&#8203;3777](https://togithub.com/clap-rs/clap/issues/3777))
    -   `ArgAction::Append`: like `Arg::multiple_occurrences` ([#&#8203;3777](https://togithub.com/clap-rs/clap/issues/3777))
    -   `ArgAction::SetTrue`: Treat `--flag` as `--flag=true` ([#&#8203;3775](https://togithub.com/clap-rs/clap/issues/3775))
        -   Implies `Arg::default_value("false")` ([#&#8203;3786](https://togithub.com/clap-rs/clap/issues/3786))
        -   Parses `Arg::env` via `Arg::value_parser`
    -   `ArgAction::SetFalse`: Treat `--flag` as `--flag=false` ([#&#8203;3775](https://togithub.com/clap-rs/clap/issues/3775))
        -   Implies `Arg::default_value("true")` ([#&#8203;3786](https://togithub.com/clap-rs/clap/issues/3786))
        -   Parses `Arg::env` via `Arg::value_parser`
    -   `ArgAction::Count`: Treat `--flag --flag --flag` as `--flag=1 --flag=2 --flag=3` ([#&#8203;3775](https://togithub.com/clap-rs/clap/issues/3775))
        -   Implies `Arg::default_value("0")` ([#&#8203;3786](https://togithub.com/clap-rs/clap/issues/3786))
        -   Parses `Arg::env` via `Arg::value_parser`
-   *(derive)* Opt-in to new `Arg::value_parser` / `Arg::action` with either `#[clap(value_parser)]` ([#&#8203;3589](https://togithub.com/clap-rs/clap/issues/3589), [#&#8203;3742](https://togithub.com/clap-rs/clap/issues/3742)) / `#[clap(action)]` attributes ([#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
    -   Default `ValueParser` is determined by `value_parser!` ([#&#8203;3199](https://togithub.com/clap-rs/clap/issues/3199), [#&#8203;3496](https://togithub.com/clap-rs/clap/issues/3496))
    -   Default `ArgAction` is determine by a hard-coded lookup on the type ([#&#8203;3794](https://togithub.com/clap-rs/clap/issues/3794))
-   `Command::multicall` is now stable for busybox-like programs and REPLs ([#&#8203;2861](https://togithub.com/clap-rs/clap/issues/2861), [#&#8203;3684](https://togithub.com/clap-rs/clap/issues/3684))
-   `ArgMatches::{try_,}contains_id` for checking if there are values for an argument that mirrors the new `get_{one,many}` API

##### Fixes

-   Don't correct argument id in `default_value_ifs_os`([#&#8203;3815](https://togithub.com/clap-rs/clap/issues/3815))

*parser*

-   Set `ArgMatches::value_source` and `ArgMatches::occurrences_of` for external subcommands ([#&#8203;3732](https://togithub.com/clap-rs/clap/issues/3732))
-   Use value delimiter for `Arg::default_missing_values` ([#&#8203;3761](https://togithub.com/clap-rs/clap/issues/3761), [#&#8203;3765](https://togithub.com/clap-rs/clap/issues/3765))
-   Split`Arg::default_value` / `Arg::env` on value delimiters independent of whether `--` was used ([#&#8203;3765](https://togithub.com/clap-rs/clap/issues/3765))
-   Allow applying defaults to flags ([#&#8203;3294](https://togithub.com/clap-rs/clap/issues/3294), 3775)
-   Defaults no longer satisfy `required` and its variants ([#&#8203;3793](https://togithub.com/clap-rs/clap/issues/3793))

### [`v3.1.18`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3118---2022-05-10)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.17...v3.1.18)

##### Fixes

-   Fix deprecated `arg_enum!` for users migrating to clap3 ([#&#8203;3717](https://togithub.com/clap-rs/clap/issues/3717))
-   Verify all `required_unless_present_all` arguments exist
-   Verify group members exist before processing group members ([#&#8203;3711](https://togithub.com/clap-rs/clap/issues/3711))
-   *(help)* Use `...` when not enough `value_names` are supplied

**gated behind `unstable-v4`**

-   Verify `required` is not used with conditional required settings ([#&#8203;3660](https://togithub.com/clap-rs/clap/issues/3660))
-   Disallow more `value_names` than `number_of_values` ([#&#8203;2695](https://togithub.com/clap-rs/clap/issues/2695))
-   *(parser)* Assert on unknown args when using external subcommands ([#&#8203;3703](https://togithub.com/clap-rs/clap/issues/3703))
-   *(parser)* Always fill in `""` argument for external subcommands ([#&#8203;3263](https://togithub.com/clap-rs/clap/issues/3263))
-   *(derive)* Detect escaped external subcommands that look like built-in subcommands ([#&#8203;3703](https://togithub.com/clap-rs/clap/issues/3703))
-   *(derive)* Leave `Arg::id` as `verbatim` casing ([#&#8203;3282](https://togithub.com/clap-rs/clap/issues/3282))

### [`v3.1.17`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3117---2022-05-06)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.16...v3.1.17)

##### Fixes

-   Allow value names for `arg!` macro to have dashes when quoted, like longs

### [`v3.1.16`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3116---2022-05-06)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.15...v3.1.16)

##### Fixes

-   *(parser)* `Arg::exclusive` overrides `Arg::required`, like other conflicts
-   *(error)* Don't duplicate arguments in usage
-   *(error)* Don't show hidden arguments in conflict error usage
-   *(help)* New `help_template` variable `{name}` to fix problems with `{bin}`
-   *(help)* Don't wrap URLs

**gated behind `unstable-v4`**

-   Leading dashes in `Arg::long` are no longer allowed
-   *(help)* Use `Command::display_name` in the help title rather than `Command::bin_name`

### [`v3.1.15`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3115---2022-05-02)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.14...v3.1.15)

##### Fixes

-   *(error)* Render actual usage for unrecognized subcommands
-   *(multicall)* Improve bad command error
-   *(multicall)* Always require a multicall command
-   *(multicall)* Disallow arguments on multicall parent command
-   *(multicall)* More consistent with rest of clap errors

### [`v3.1.14`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3114---2022-05-01)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.13...v3.1.14)

##### Fixes

-   Panic when calling `Command::build` with a required positional argument nested several layers in subcommands

### [`v3.1.13`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3113---2022-04-30)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.12...v3.1.13)

##### Fixes

-   Help subcommand and `Command::write_help` now report required arguments in usage in more circumstances
-   Unknown subcommand for help subcommand flag now reports an error with more context
-   More details reported when using `debug` feature
-   Allow disabling `color` feature with `debug` feature enabled

### [`v3.1.12`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3112---2022-04-22)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.11...v3.1.12)

##### Fixes

-   Regression in 3.1.11 where the (output) streams were crossed

### [`v3.1.11`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3111---2022-04-22)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.10...v3.1.11)

##### Fixes

-   Implied conflicts override `Arg::required`, making the behavior consistent with how we calculate conflicts for error reporting
-   Members of a mutually exclusive `ArgGroup`  override `Arg::required`, making the behavior consistent with how we calculate conflicts for error reporting
-   `Arg::overrides_with` always override `Arg::required`, not just when the parser processes an override

### [`v3.1.10`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3110---2022-04-19)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.9...v3.1.10)

##### Features

-   Expose `Command::build` for custom help generation or other command introspection needs

### [`v3.1.9`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;319---2022-04-15)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.8...v3.1.9)

##### Fixes

-   Pin the `clap_derive` version so a compatible version is always used with `clap`

### [`v3.1.8`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;318---2022-04-01)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.7...v3.1.8)

##### Fixes

-   Add `Debug` impls to more types

### [`v3.1.7`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;317---2022-03-31)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.6...v3.1.7)

##### Fixes

-   *(derive)* Abort, rather than ignore, when deriving `ArgEnum` with non-unit unskipped variants

### [`v3.1.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;316---2022-03-07)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.5...v3.1.6)

##### Fixes

-   Don't panic when validating delimited defaults ([#&#8203;3541](https://togithub.com/clap-rs/clap/issues/3541))
-   Make it clearer that `cargo` feature is needed
-   Documentation improvements

### [`v3.1.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;315---2022-03-02)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.4...v3.1.5)

##### Fixes

-   Dependency upgrade

### [`v3.1.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;314---2022-03-02)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.3...v3.1.4)

##### Features

-   *(help)* Show `PossibleValue::help` in long help (`--help`)  **(gated behind `unstable-v4`)** ([#&#8203;3312](https://togithub.com/clap-rs/clap/issues/3312))

### [`v3.1.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;313---2022-02-28)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.2...v3.1.3)

##### Fixes

-   Don't panic when validating delimited defaults ([#&#8203;3514](https://togithub.com/clap-rs/clap/issues/3514))

### [`v3.1.2`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;312---2022-02-23)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.1...v3.1.2)

##### Fixes

-   *(derive)* Allow other attribute with a subcommand that has subcommands

##### Documentation

-   *(examples)* List example topics
-   *(derive)* Clarify syntax and relation to builder API

### [`v3.1.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3118---2022-05-10)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.1.0...v3.1.1)

##### Fixes

-   Fix deprecated `arg_enum!` for users migrating to clap3 ([#&#8203;3717](https://togithub.com/clap-rs/clap/issues/3717))
-   Verify all `required_unless_present_all` arguments exist
-   Verify group members exist before processing group members ([#&#8203;3711](https://togithub.com/clap-rs/clap/issues/3711))
-   *(help)* Use `...` when not enough `value_names` are supplied

**gated behind `unstable-v4`**

-   Verify `required` is not used with conditional required settings ([#&#8203;3660](https://togithub.com/clap-rs/clap/issues/3660))
-   Disallow more `value_names` than `number_of_values` ([#&#8203;2695](https://togithub.com/clap-rs/clap/issues/2695))
-   *(parser)* Assert on unknown args when using external subcommands ([#&#8203;3703](https://togithub.com/clap-rs/clap/issues/3703))
-   *(parser)* Always fill in `""` argument for external subcommands ([#&#8203;3263](https://togithub.com/clap-rs/clap/issues/3263))
-   *(derive)* Detect escaped external subcommands that look like built-in subcommands ([#&#8203;3703](https://togithub.com/clap-rs/clap/issues/3703))
-   *(derive)* Leave `Arg::id` as `verbatim` casing ([#&#8203;3282](https://togithub.com/clap-rs/clap/issues/3282))

### [`v3.1.0`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;310---2022-02-16)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.14...v3.1.0)

##### Compatibility

Changes in behavior of note that are not guaranteed to be compatible across releases:

-   *(help)* `help` subcommand shows long help like `--help`, rather than short help (`-h`), deprecated `clap::AppSettings::UseLongFormatForHelpSubcommand` ([#&#8203;3440](https://togithub.com/clap-rs/clap/issues/3440))
-   *(help)* Pacman-style subcommands are now ordered the same as usage errors ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))
-   *(help)* Pacman-style subcommands use standard alternate syntax in usage ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))

##### Deprecations

-   `clap::Command` is now preferred over `clap::App` ([#&#8203;3089](https://togithub.com/clap-rs/clap/issues/3089) in [#&#8203;3472](https://togithub.com/clap-rs/clap/issues/3472))
    -   `clap::command!` is now preferred over `clap::app_from_crate` ([#&#8203;3089](https://togithub.com/clap-rs/clap/issues/3089) in [#&#8203;3474](https://togithub.com/clap-rs/clap/issues/3474))
    -   `clap::CommandFactory::command` is now preferred over `clap::IntoApp::into_app` ([#&#8203;3089](https://togithub.com/clap-rs/clap/issues/3089) in [#&#8203;3473](https://togithub.com/clap-rs/clap/issues/3473))
-   *(help)* `help` subcommand shows long help like `--help`, rather than short help (`-h`), deprecated `clap::AppSettings::UseLongFormatForHelpSubcommand` ([#&#8203;3440](https://togithub.com/clap-rs/clap/issues/3440))
-   *(error)* Deprecate `clap::AppSettings::WaitOnError`, leaving it to the user to implement
-   *(validation)* `clap::Command::subcommand_required(true).arg_required_else_help(true)` is now preferred over `clap::AppSettings::SubcommandRequiredElseHelp` ([#&#8203;3280](https://togithub.com/clap-rs/clap/issues/3280))
-   *(builder)* `clap::AppSettings` are nearly all deprecated and replaced with builder methods and getters ([#&#8203;2717](https://togithub.com/clap-rs/clap/issues/2717))
-   *(builder)* `clap::ArgSettings` is deprecated and replaced with builder methods and getters ([#&#8203;2717](https://togithub.com/clap-rs/clap/issues/2717))
-   *(builder)* `clap::Arg::id` and `clap::ArgGroup::id` are now preferred over `clap::Arg::name` and `clap::ArgGroup::name` ([#&#8203;3335](https://togithub.com/clap-rs/clap/issues/3335))
-   *(help)* `clap::Command::next_help_heading` is now preferred over `clap::Command::help_heading` ([#&#8203;1807](https://togithub.com/clap-rs/clap/issues/1807), [#&#8203;1553](https://togithub.com/clap-rs/clap/issues/1553))
-   *(error)* `clap::error::ErrorKind` is now preferred over `clap::ErrorKind` ([#&#8203;3395](https://togithub.com/clap-rs/clap/issues/3395))
-   *(error)* `clap::Error::kind()` is now preferred over `clap::Error::kind`
-   *(error)* `clap::Error::context()` is now preferred over `clap::Error::info` ([#&#8203;2628](https://togithub.com/clap-rs/clap/issues/2628))

Note: All items deprecated in 3.0.0 are now hidden in the documentation. ([#&#8203;3458](https://togithub.com/clap-rs/clap/issues/3458))

##### Features

-   *(matches)* Add `clap::ArgMatches::value_source` to determine what insert the value ([#&#8203;1345](https://togithub.com/clap-rs/clap/issues/1345))
-   *(help)* Override derived display order with `clap::Command::next_display_order` ([#&#8203;1807](https://togithub.com/clap-rs/clap/issues/1807))
-   *(error)* Show possible values when an argument doesn't have a value ([#&#8203;3320](https://togithub.com/clap-rs/clap/issues/3320))
-   *(error)* New `clap::Error::context` API to open the door for fully-custom error messages ([#&#8203;2628](https://togithub.com/clap-rs/clap/issues/2628))
    -   *(error)* `clap::error::ErrorKind` now implements `Display`

##### Fixes

-   *(builder)* Some functions were renamed for consistency and fixing spelling issues
-   *(builder)* Allow `clap::Command::color` to override previous calls ([#&#8203;3449](https://togithub.com/clap-rs/clap/issues/3449))
-   *(parse)* Propagate globals with multiple subcommands ([#&#8203;3428](https://togithub.com/clap-rs/clap/issues/3428))
-   *(validation)* Give `ArgRequiredElseHelp` precedence over `SubcommandRequired` ([#&#8203;3456](https://togithub.com/clap-rs/clap/issues/3456))
-   *(validation)* Default values no longer count as "present" for conflicts, requires, `clap::Command::arg_required_else_help`, etc ([#&#8203;3076](https://togithub.com/clap-rs/clap/issues/3076), [#&#8203;1264](https://togithub.com/clap-rs/clap/issues/1264))
-   *(assert)* Report invalid defaults ([#&#8203;3202](https://togithub.com/clap-rs/clap/issues/3202))
-   *(help)* Clarify how to handle `-h` conflicts ([#&#8203;3403](https://togithub.com/clap-rs/clap/issues/3403))
-   *(help)* Make it easier to debug the addition of help flags ([#&#8203;3425](https://togithub.com/clap-rs/clap/issues/3425))
-   *(help)* Pacman-style subcommands are now separated with spaces ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))
-   *(help)* Pacman-style subcommands are now ordered the same as usage errors ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))
-   *(help)* Pacman-style subcommands use standard alternate syntax in usage ([#&#8203;3470](https://togithub.com/clap-rs/clap/issues/3470))
-   *(error)* Be consistent in showing of required attributes between errors / usage ([#&#8203;3390](https://togithub.com/clap-rs/clap/issues/3390))
-   *(error)* Show user's order of possible values, like in `--help` ([#&#8203;1549](https://togithub.com/clap-rs/clap/issues/1549))
-   *(error)* Allow customizing error type in `clap::error::Result` ([#&#8203;3395](https://togithub.com/clap-rs/clap/issues/3395))

##### Performance

-   *(error)* Reduced stack size of `clap::Error` ([#&#8203;3395](https://togithub.com/clap-rs/clap/issues/3395))

##### Documentation

-   *(builder)* Correct data take accepted for `clap::Arg::validator`
-   *(derive)* Clarify `parse` attribute
-   *(tutorial)* Demonstrate custom parsing
-   *(example)* Consistently list out required feature flags ([#&#8203;3448](https://togithub.com/clap-rs/clap/issues/3448))

### [`v3.0.14`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3014---2022-02-01)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.13...v3.0.14)

##### Features

-   Added `ArgMatches::args_present()` to check if any args are present
-   Added `Error::kind()` as we work to deprecate direct member access for `Error`
-   Added `App::get_version`
-   Added `App::get_long_version`
-   Added `App::get_author`
-   Added `App::get_subcommand_help_heading`
-   Added `App::get_subcommand_value_name`
-   Added `App::get_after_help`
-   Added `App::get_after_long_help`

##### Performance

-   Misc binary size reductions

### [`v3.0.13`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3013---2022-01-26)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.12...v3.0.13)

##### Fixes

-   Show optional flag values wrapped in `[]`

### [`v3.0.12`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3012---2022-01-24)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.11...v3.0.12)

##### Features

-   *(derive)* Support for `default_value_os_t`

### [`v3.0.11`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3011---2022-01-24)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.10...v3.0.11)

##### Fixes

-   Ensure conflicts work when they target a group with a default value

### [`v3.0.10`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3010---2022-01-18)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.9...v3.0.10)

##### Fixes

-   Resolve `panic!` from v3.0.8 when using `global_setting(PropagateVersion)`.

### [`v3.0.9`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;309---2022-01-17)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.8...v3.0.9)

##### Features

-   Added `App::find_subcommand_mut`

### [`v3.0.8`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;308---2022-01-17)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.7...v3.0.8)

##### Fixes

-   Respected `DisableColoredHelp` on `cmd help help`
-   Provide a little more context when completing arguments for `cmd help`
-   Provide more context for some asserts
-   Small documentation improvements

### [`v3.0.7`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;307---2022-01-12)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.6...v3.0.7)

##### Fixes

-   Shift more asserts from parsing to `App` building (ie will now run in `App::debug_assert`)

**derive**

-   Documentation fixes

### [`v3.0.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;306---2022-01-10)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.5...v3.0.6)

##### Fixes

**derive**

-   Don't assume user does `use clap::ArgEnum` ([#&#8203;3277](https://togithub.com/clap-rs/clap/issues/3277))
-   Documentation fixes

### [`v3.0.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;305---2022-01-05)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.4...v3.0.5)

##### Fixes

-   Provide hack to workaround [inability to detect external subcommands aliasing when escaped](https://togithub.com/clap-rs/clap/issues/3263) ([#&#8203;3264](https://togithub.com/clap-rs/clap/issues/3264))

**docs:**

-   Cleaned up code blocks in tutorials ([#&#8203;3261](https://togithub.com/clap-rs/clap/issues/3261))
-   Clean up quotes in `ArgMatches` asserts
-   List correct replacement for deprecated `Parser::from_clap` ([#&#8203;3257](https://togithub.com/clap-rs/clap/issues/3257))

### [`v3.0.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;304---2022-01-04)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.3...v3.0.4)

##### Features

-   For very limited cases, like `cargo`, expose `ArgMatches::is_valid_arg` to avoid panicing on undefined arguments

### [`v3.0.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;303---2022-01-04)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.2...v3.0.3)

##### Fixes

-   Specify cause of debug assert failure

### [`v3.0.2`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;302---2022-01-04)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.1...v3.0.2)

##### Fixes

-   Ignore `Last` when checking hyphen values (see [#&#8203;3249](https://togithub.com/clap-rs/clap/issues/3249) for details)
-   Help catch bugs with `#[must_use]`

### [`v3.0.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;3014---2022-02-01)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0...v3.0.1)

##### Features

-   Added `ArgMatches::args_present()` to check if any args are present
-   Added `Error::kind()` as we work to deprecate direct member access for `Error`
-   Added `App::get_version`
-   Added `App::get_long_version`
-   Added `App::get_author`
-   Added `App::get_subcommand_help_heading`
-   Added `App::get_subcommand_value_name`
-   Added `App::get_after_help`
-   Added `App::get_after_long_help`

##### Performance

-   Misc binary size reductions

### [`v3.0.0`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;300---2021-12-31)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.13...v3.0.0)

**Note:** clap v3 has been in development for several years and has changed
hands multiple times.  Unfortunately, our changelog might be incomplete,
whether in changes or their motivation.

##### Highlights

A special thanks to the maintainers, contributors, beta users, and sponsors who
have helped along this journey, especially kbknapp.

**[StructOpt](https://docs.rs/structopt/) Integration**

[StructOpt](https://docs.rs/structopt/) provides a serde-like declarative
approach to defining your parser.  The main benefits we've seen so far from integrating are:

-   Tighter feedback between the design of clap and the derives
-   More universal traits.  Crates exist for common CLI patterns
    ([example](https://togithub.com/rust-cli/clap-verbosity-flag))
    and we've re-designed the `StructOpt` traits so crates built on clap3 can be
    reused not just with other derives but also people using the builder API.
    People can even hand implement these so people using the builder API won't
    have the pay the cost for derives.

**Custom Help Headings**

Previously, clap automatically grouped arguments in the help as either
`ARGS`, `FLAGS`, `OPTIONS`, and `SUBCOMMANDS`.

You can now override the default group with `Arg::help_heading` and
`App::subcommand_help_heading`.  To apply a heading to a series of arguments,
you can set `App::help_heading`.

**Deprecations**

While a lot of deprecations have been added to clean up the API (overloaded
meaning of `Arg::multiple`) or make things more consistent, some particular
highlights are:

-   `clap_app!` has been deprecated in favor of the builder API with `arg!` ([clap-rs/clap#&#8203;2835](https://togithub.com/clap-rs/clap/issues/2835))
-   `Arg::from_usage` has been deprecated in favor of `arg!` ([clap-rs/clap#&#8203;3087](https://togithub.com/clap-rs/clap/issues/3087))
    -   [Porting example](https://togithub.com/clap-rs/clap/commit/4c4a2b86a08ef9e2d63010aab4909dd5a013dfb0)
-   The YAML API has been deprecated in favor the builder or derive APIs ([clap-rs/clap#&#8203;3087](https://togithub.com/clap-rs/clap/issues/3087))

##### Migrating

**From clap v2**

1.  Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
2.  Update your dependency
    1.  *If you use `no-default-features`:* add the `std` feature
3.  Resolve compiler errors
4.  Resolve behavior changes
    1.  Refactor your `App` creation to a function and add a test similar to the one below, resolving any of its assertions
    2.  Look over the "subtle changes" under BREAKING CHANGES
    3.  *If using builder:* test your application under various circumstances to see if `ArgMatches` asserts regarding `AllowInvalidUtf8`.
5.  *At your leisure:* resolve deprecation notices

Example test:

```rust
fn app() -> clap::App<'static> {
    ...
}

#[test]
fn verify_app() {
    app().debug_assert();
}
```

**From structopt 0.3.25**

1.  Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
2.  Replace your dependency from `structopt = "..."` to `clap = { version = "3.0", features = ["derive"] }`
    1.  *If you use `no-default-features`:* add the `std` feature
3.  Resolve compiler errors, including
    1.  Update your `use` statements from `structopt` and `structopt::clap` to `clap`
4.  Resolve behavior changes
    1.  Add a test similar to the one below, resolving any of its assertions
    2.  Look over the "subtle changes" under BREAKING CHANGES
5.  *At your leisure:* resolve deprecation notices

Example test:

```rust
#[derive(clap::StructOpt)]
struct Args {
    ...
}

#[test]
fn verify_app() {
    use clap::IntoApp;
    Args::into_app().debug_assert()
}
```

**From clap v3.0.0-beta.5**

1.  Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
2.  Update your dependency
    1.  Add in `derive`, `env`, `cargo`, or `unicode` feature flags as needed
3.  Resolve compiler errors
    1.  *If you use `yaml`, `clap_app!`, or usage parser:* revert any changes you made for clap3
    2.  Change `Arg::about` `Arg::long_about` back to `help` and `long_help` and change `PossibleValue::about` to `help` ([clap-rs/clap#&#8203;3075](https://togithub.com/clap-rs/clap/issues/3075))
    3.  Change `AppSettings::HelpRequired` to `AppSettings::HelpExpected`
    4.  Change `PossibleValue::hidden` to `PossibleValue::hide`
    5.  Change `App::subcommand_placeholder` to `App::subcommand_value_name` / `App::subcommand_help_heading`
4.  Resolve behavior changes
    1.  Add the above listed test appropriate for your application and resolve any problems it reports
    2.  *If using `derive`:* see the structopt breaking changes section for `Vec` changes
    3.  *If using builder:* test your application under various circumstances to see if `ArgMatches` asserts regarding `AllowInvalidUtf8`.
5.  *At your leisure:* resolve deprecation notices

##### BREAKING CHANGES

**From clap 2**

Subtle changes (i.e. compiler won't catch):

-   `AppSettings::UnifiedHelpMessage` is now default behaviour
    -   `{flags}` and `{unified}` will assert if present in `App::help_template`
    -   See [clap-rs/clap#&#8203;2807](https://togithub.com/clap-rs/clap/issues/2807)
-   `AppSettings::EnableColoredHelp` is now the default behavior but can be
    opted-out with `AppSettings::DisableColoredHelp`
    ([clap-rs/clap#&#8203;2806](https://togithub.com/clap-rs/clap/issues/2806))
-   `App::override_usage` no longer implies a leading `\t`, allowing multi lined usages
-   `Arg::require_equals` no longer implies `ArgSettings::ForbidEmptyValues` ([#&#8203;2233](https://togithub.com/clap-rs/clap/issues/2233))
-   `Arg::require_delimiter` no longer implies `ArgSettings::TakesValue` and `ArgSettings::UseValueDelimiter` ([#&#8203;2233](https://togithub.com/clap-rs/clap/issues/2233))
-   `Arg::env`, `Arg::env_os`, `Arg::last`, `Arg::require_equals`, `Arg::allow_hyphen_values`,
    `Arg::hide_possible_values`, `Arg::hide_default_value`, `Arg::hide_env_values`,
    `Arg::case_insensitive` and `Arg::multiple_values` no longer imply `ArgSettings::TakesValue` ([#&#8203;2233](https://togithub.com/clap-rs/clap/issues/2233))
-   `ArgMatches::is_present` no longer checks subcommand names
-   Some env variable values are now considered false for flags, not just "not-present" ([clap-rs/clap#&#8203;2539](https://togithub.com/clap-rs/clap/issues/2539))
-   Changed `...`s meaning in usage parser.  Before, it always meant `multiple` which is still true for `--option [val]...`.  Now `[name]... --option [val]` results in `ArgSettings::MultipleOccurrences`.
-   Usage exit code changed from `1` to `2` ([clap-rs/clap#&#8203;1327](https://togithub.com/clap-rs/clap/issues/1327))
-   Reject `--foo=bar` when `takes_value(false)` ([clap-rs/clap#&#8203;1543](https://togithub.com/clap-rs/clap/issues/1543))
-   No longer accept an arbitrary number of `-` for long arguments (`-----long`)

Easier to catch changes:

-   When using `no-default-features`, you now have to specify the `std` feature (reserved for future work)
-   Gated env support behind `env` feature flag
    -   Impacts `Arg::env`, `Arg::env_os`, `Arg::hide_env_values`, `ArgSettings::HideEnvValues`
    -   See [clap-rs/clap#&#8203;2694](https://togithub.com/clap-rs/clap/pull/2694)
-   Gated crate information behind `cargo` feature flag
    -   Impacts `crate_name!`, `crate_version!`, `crate_authors!`, `crate_description!`, `app_from_crate!`
-   `AppSettings::StrictUtf8` is now default behaviour and asserts if
    `AppSettings::AllowInvalidUtf8ForExternalSubcommands` and
    `ArgSettings::AllowInvalidUtf8` and `ArgMatches::value_of_os` aren't used
    together
    -   `AppSettings::AllowInvalidUtf8` has been removed
    -   [clap-rs/clap#&#8203;751](https://togithub.com/clap-rs/clap/issues/751)
-   `Arg::short` and `Arg::value_delimiter` now take a `char` instead of a `&str`
-   `ArgMatches` panics on unknown arguments
-   Removed `VersionlessSubcommands`, making it the default (see [clap-rs/clap#&#8203;2812](https://togithub.com/clap-rs/clap/issues/2812))
-   Completion generation has been split out into [clap_complete](./clap_complete).
-   Removed `ArgSettings::EmptyValues` in favor of `ArgSettings::ForbidEmptyValues`
-   Validator signatures have been loosed:
    -   `Arg::validator` now takes first argument as `Fn(&str) -> Result<O, E: ToString>` instead of
        `Fn(String) -> Result<(), String>`
    -   `Arg::validator_os` now takes first argument as `Fn(&OsStr) -> Result<O, OsString>` instead of
        `Fn(&OsStr) -> Result<(), OsString>`
-   `Arg::value_name` now sets, rather than appends (see [clap-rs/clap#&#8203;2634](https://togithub.com/clap-rs/clap/issues/2634))
-   Upgrade `yaml-rust` from 0.3 to 0.4
-   Replaced `ArgGroup::from(BTreeMap)` to `ArgGroup::from(yaml)`
-   Replaced `ArgMatches::usage` with `App::generate_usage`
-   Replaced `Arg::settings` with `Arg::setting(Setting1 | Setting2)`
-   `App` and `Arg` now need only one lifetime
-   Removed deprecated `App::with_defaults`, replaced with `app_from_crate`
-   Removed deprecated `AppSettings::PropagateGlobalValuesDown` (now the default)
-   Some `App` functions, like `App::write_help` now take `&mut self` instead of `&self`
-   `Error::message` is now private, use `Error::to_string`
-   `Arg::default_value_if`, `Arg::default_value_if_os`, `Arg::default_value_ifs`,
    `Arg::default_value_ifs_os` now takes the default value parameter as an option ([clap-rs/clap#&#8203;1406](https://togithub.com/clap-rs/clap/issues/1406))
-   Changed `App::print_help` & `App::print_long_help` to now return `std::io::Result`
-   Changed `App::write_help` & `App::write_long_help` to now return `std::io::Result`
-   Changed `Arg::index`, `Arg::number_of_values`, `Arg::min_values`, `Arg::max_values` to taking `usize` instead of u64
-   Changed `Error::info` to type `Vec<String>` instead of `Option<Vec<String>>`
-   Changed `ArgMatches::subcommand` to now return `Option<(&str, &ArgMatches)>`
-   Renamed `ErrorKind::MissingArgumentOrSubcommand` to `ErrorKind::DisplayHelpOnMissingArgumentOrSubcommand`
-   Renamed `ErrorKind::HelpDisplayed` to `ErrorKind::DisplayHelp`
-   Renamed `ErrorKind::VersionDisplayed` to `ErrorKind::DisplayVersion`
-   Added `#[non_exhaustive]` to `clap::{ValueHint, ErrorKind, AppSettings, ArgSettings}` ([clap-rs/clap#&#8203;3167](https://togithub.com/clap-rs/clap/pull/3167))

**From structopt 0.3.25**

-   By default, the `App` isn't initialized with crate information anymore.  Now opt-in via `#[clap(author)]`, `#[clap(about)]`, `#[clap(version)]` ([clap-rs/clap#&#8203;3034](https://togithub.com/clap-rs/clap/issues/3034))
-   `#[clap(default_value)]` is replaced with `#[clap(default_value_t)]` ([clap-rs/clap#&#8203;1694](https://togithub.com/clap-rs/clap/issues/1694))
-   Subcommands nested under subcommands now needs a `#[clap(subcommand)]` attribute ([clap-rs/clap#&#8203;2587](https://togithub.com/clap-rs/clap/pull/2587))
-   `Vec<_>` and `Option<Vec<_>>` have changed from `multiple` to `multiple_occurrences`

On top of the clap 2 changes

##### Performance

**From clap 2**

-   Split out non-default `unicode` feature flag for faster builds and smaller binaries for ASCII-only CLIs.
-   Split out non-default `env` feature flag  for faster builds and smaller binaries.

##### Features

**From clap 2**

-   Integration of `structopt::StructOpt` via `clap::Parser` (requires `derive` feature flag)

-   Custom help headings
    -   `App::help_heading` (apply to all future args)
    -   `Arg::help_heading` (apply to current arg)
    -   `App::subcommand_help_heading` along with `App::subcommand_value_name` (apply to subcommands)
    -   See [clap-rs/clap#&#8203;805](https://togithub.com/clap-rs/clap/issues/805)
    -   `AppSettings::UnifiedHelpMessage` is now default behaviour ([clap-rs/clap#&#8203;2807](https://togithub.com/clap-rs/clap/issues/2807))

-   Deriving of `ArgEnum` for generating `Arg::possible_values` (requires `derive` feature flag)

-   Disable built-in help/version behavior with `AppSettings::NoAutoHelp` and `AppSettings::NoAutoVersion`

-   Change an existing arg with new builder method `mut_arg` (particularly helpful for `--help` and `--version`)

-   Provide extra context in long help messages (`--help`) with `before_long_help` and `after_long_help` ([clap-rs/clap#&#8203;1903](https://togithub.com/clap-rs/clap/issues/1903))

-   Detect missing help descriptions via debug asserts by enabling `AppSettings::HelpExpected`

-   Aliases for short flags ([clap-rs/clap#&#8203;1896](https://togithub.com/clap-rs/clap/issues/1896))

-   Validate UTF-8 values, rather than panicing during `ArgMatches::value_of` thanks to `AppSettings::AllowInvalidUtf8ForExternalSubcommands` and `ArgSettings::AllowInvalidUtf8`
    -   Debug builds will assert when the `ArgMatches` calls do not match the UTF-8 setting.
    -   See [clap-rs/clap#&#8203;751](https://togithub.com/clap-rs/clap/issues/751)

-   `clap::PossibleValue` to allow
    -   Hiding ([clap-rs/clap#&#8203;2756](https://togithub.com/clap-rs/clap/issues/2756))
    -   Completion help for possible values for args ([clap-rs/clap#&#8203;2731](https://togithub.com/clap-rs/clap/issues/2731))

-   Allow arguments to conflict with all others via `Arg::exclusive` ([clap-rs/clap#&#8203;1583](https://togithub.com/clap-rs/clap/issues/1583))

-   Validate arguments with a regex (required `regex` feature flag)
    -   See [clap-rs/clap](https://togithub.com/clap-rs/clap/issues/1968)

-   `Arg::default_missing_value` for cases like `--color[=<WHEN>]` ([clap-rs/clap#&#8203;1587](https://togithub.com/clap-rs/clap/pull/1587))

-   `clap::App::color` / `clap::ColorChoice` to specify color setting for the app

-   Custom error reporting with `App::error`

-   `App::debug_assert` test helper

-   Replace `Arg::multiple(bool)` with `Arg::multiple_values` / `Arg::multiple_occurrences`
    -   Positionals can be either

-   Added support for flag subcommands like pacman ([clap-rs/clap#&#8203;1361](https://togithub.com/clap-rs/clap/issues/1361))

-   Partial parsing via `AppSettings::IgnoreErrors` ([clap-rs/clap#&#8203;1880](https://togithub.com/clap-rs/clap/issues/1880))

-   Enable `cmd help` to print long help (`--help` instead of `-h`) with `AppSettings::UseLongFormatForHelpSubcommand` ([clap-rs/clap#&#8203;2435](https://togithub.com/clap-rs/clap/issues/2435))

-   Allow long arg abbreviations like we do with subcommands via `AppSettings::InferLongArgs` ([clap-rs/clap#&#8203;2435](https://togithub.com/clap-rs/clap/issues/2435))

-   Detect subcommands among positional arguments with `AppSettings::SubcommandPrecedenceOverArg`

-   Give completion scripts hints with `Arg::value_hint` ([clap-rs/clap#&#8203;1793](https://togithub.com/clap-rs/clap/pull/1793))

-   Allow unsetting defaults with

-   `Arg::default_value_if`, `Arg::default_value_if_os`, `Arg::default_value_ifs`,
    `Arg::default_value_ifs_os` ([clap-rs/clap#&#8203;1406](https://togithub.com/clap-rs/clap/issues/1406))

-   Interpret some env variable values as `false` for flags, in addition to "not-present" ([clap-rs/clap#&#8203;2539](https://togithub.com/clap-rs/clap/issues/2539))
    -   `n`, `no`, `f`, `false`, `off`, `0`

-   Added `arg!` macro for creating an `Arg` from a compile-time usage parser

-   *(Experimental)* Busybox-like multi-call support
    -   See `AppSettings::Multicall` behind `unstable-multicall` feature flag
    -   See [clap-rs/clap#&#8203;1120](https://togithub.com/clap-rs/clap/issues/1120)

-   *(Experimental)* Alias an argument to anything group of arguments
    -   See `App::replace` behind `unstable-replace` feature flag
    -   See [clap-rs#&#8203;1603](https://togithub.com/clap-rs/clap/issues/1603)

-   *(Experimental)* Grouping of multiple values within multiple occurrences
    -   See `ArgMatches::grouped_values_of` behind `unstable-grouped` feature flag
    -   See [clap-rs/clap#&#8203;1026](https://togithub.com/clap-rs/clap/issues/1026)

**From structopt 0.3.25**

-   Allow defaulting with native types via new `default_value_t [= <expr>]` attribute ([clap-rs/clap#&#8203;1694](https://togithub.com/clap-rs/clap/issues/1694))
-   New `update` API
-   New `arg_enum` attribute for integrating with `ArgEnum` trait

On top of the clap 2 changes

##### Fixes

**From clap 2**

-   Correctly handle colored output on Windows
-   Only generate version flags when `App::version`, `App::long_version` are set
    (see [clap-rs/clap#&#8203;2812](https://togithub.com/clap-rs/clap/issues/2812))
-   General completion script improvements
-   Limited default help text wrapping to 100 when `wrap_help` feature is not enabled
-   Be more specific than `Arg::multiple` with `Arg::multiple_values` and `Arg::multiple_occurrences`
-   `app_from_crate!` defaults to separating multiple authors with `", "`
-   Ensure all examples work
-   `IgnoreCase` is now unicode aware (requires `unicode` feature flag)
-   Always respect `ColorChoice::Never`, even if that means we skip colors in some cases
-   `ArgMatches` panics on unknown arguments
-   Gracefully handle empty `authors` field in `Cargo.toml` with `app_from_crate`
-   Do not show `--help` in `cmd help` with `DisableHelpFlag` ([clap-rs/clap#&#8203;3169](https://togithub.com/clap-rs/clap/pull/3169))
-   Do not show `--help` in `cmd help help` that doesn't work ([clap-rs/clap#&#8203;3169](https://togithub.com/clap-rs/clap/pull/3169))

**From structopt 0.3.25**

-   Support `SubcommandsNegateReqs` by allowing required `Option<_>`s ([clap-rs/clap#&#8203;2255](https://togithub.com/clap-rs/clap/issues/2255))
-   Infer `AllowInvalidUtf8` based on parser ([clap-rs/clap#&#8203;751](https://togithub.com/clap-rs/clap/issues/2255))
-   Gracefully handle empty `authors` field in `Cargo.toml`
-   Don't panic with `default_value_os` but treat it like `default_value` ([clap-rs/clap#&#8203;3031](https://togithub.com/clap-rs/clap/issues/3031))
-   When using `flatten` and `subcommand`, ensure our doc comment always overrides the nested container's doc comment, whether it has only `about` or `about` and `long_about` ([clap-rs/clap#&#8203;3175](]https://togithub.com/clap-rs/clap/pull/3175))

On top of the clap 2 changes

##### Minimum Required Rust

-   As of this release, `clap` requires `rustc 1.54.0` or greater.

### [`v3.0.0-rc.13`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.12...v3.0.0-rc.13)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.12...v3.0.0-rc.13)

### [`v3.0.0-rc.12`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.11...v3.0.0-rc.12)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.11...v3.0.0-rc.12)

### [`v3.0.0-rc.11`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.10...v3.0.0-rc.11)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.10...v3.0.0-rc.11)

### [`v3.0.0-rc.10`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.9...v3.0.0-rc.10)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.9...v3.0.0-rc.10)

### [`v3.0.0-rc.9`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.8...v3.0.0-rc.9)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.8...v3.0.0-rc.9)

### [`v3.0.0-rc.8`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.7...v3.0.0-rc.8)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.7...v3.0.0-rc.8)

### [`v3.0.0-rc.7`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.6...v3.0.0-rc.7)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.6...v3.0.0-rc.7)

### [`v3.0.0-rc.6`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.5...v3.0.0-rc.6)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.5...v3.0.0-rc.6)

### [`v3.0.0-rc.5`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.4...v3.0.0-rc.5)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.4...v3.0.0-rc.5)

### [`v3.0.0-rc.4`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.3...v3.0.0-rc.4)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.3...v3.0.0-rc.4)

### [`v3.0.0-rc.3`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.2...v3.0.0-rc.3)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.2...v3.0.0-rc.3)

### [`v3.0.0-rc.2`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.1...v3.0.0-rc.2)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.1...v3.0.0-rc.2)

### [`v3.0.0-rc.1`](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.0...v3.0.0-rc.1)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-rc.0...v3.0.0-rc.1)

### [`v3.0.0-rc.0`](https://togithub.com/clap-rs/clap/compare/v3.0.0-beta.5...v3.0.0-rc.0)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-beta.5...v3.0.0-rc.0)

### [`v3.0.0-beta.5`](https://togithub.com/clap-rs/clap/compare/v3.0.0-beta.4...v3.0.0-beta.5)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v3.0.0-beta.4...v3.0.0-beta.5)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/jaysonsantos/kustomize-sops-rs).

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@bors
Copy link

bors bot commented Jun 23, 2022

Timed out.

@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.6 fix(deps): update Rust crate clap to 3.2.6 Jun 27, 2022
@renovate renovate bot changed the title fix(deps): update Rust crate clap to 3.2.6 fix(deps): update rust crate clap to 3.2.6 Jun 28, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 4965794 to 8bd108b Compare June 28, 2022 13:59
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.6 fix(deps): update rust crate clap to 3.2.7 Jun 28, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 8bd108b to 3309948 Compare June 30, 2022 13:53
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.7 fix(deps): update rust crate clap to 3.2.8 Jun 30, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 3309948 to c239a39 Compare July 12, 2022 03:57
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.8 fix(deps): update rust crate clap to 3.2.10 Jul 12, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch from c239a39 to dd9422f Compare July 13, 2022 17:56
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.10 fix(deps): update rust crate clap to 3.2.11 Jul 13, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch from dd9422f to 682f866 Compare September 25, 2022 20:33
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.11 fix(deps): update rust crate clap to 3.2.22 Sep 25, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 682f866 to e3ffdcb Compare November 20, 2022 16:47
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.22 fix(deps): update rust crate clap to 3.2.23 Nov 20, 2022
@renovate renovate bot force-pushed the renovate/clap-3.x branch from e3ffdcb to 03906a1 Compare March 16, 2023 17:52
@renovate renovate bot force-pushed the renovate/clap-3.x branch from 03906a1 to 992136c Compare May 28, 2023 12:17
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.23 fix(deps): update rust crate clap to 3.2.25 May 28, 2023
@renovate renovate bot changed the title fix(deps): update rust crate clap to 3.2.25 fix(deps): update rust crate clap to 3.2.25 - autoclosed Nov 28, 2023
@renovate renovate bot closed this Nov 28, 2023
@renovate renovate bot deleted the renovate/clap-3.x branch November 28, 2023 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant