Skip to content

Conversation

renovate[bot]
Copy link

@renovate renovate bot commented Oct 5, 2022

Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs from Renovate will soon appear from 'Mend'. Learn more here.

This PR contains the following updates:

Package Type Update Change
clap dependencies major 3.0.14 -> 4.0.0

Release Notes

clap-rs/clap (clap)

v4.5.48

Compare Source

Documentation
  • Add a new CLI Concepts document as another way of framing clap
  • Expand the typed_derive cookbook entry

v4.5.47

Compare Source

Features
  • Added impl FromArgMatches for ()
  • Added impl Args for ()
  • Added impl Subcommand for ()
  • Added impl FromArgMatches for Infallible
  • Added impl Subcommand for Infallible
Fixes
  • (derive) Update runtime error text to match clap

v4.5.46

Compare Source

Features
  • Expose StyledStr::push_str

v4.5.45

Compare Source

Fixes
  • (unstable-v5) ValueEnum variants now use the full doc comment, not summary, for PossibleValue::help

v4.5.44

Compare Source

Features
  • Add Command::mut_subcommands

v4.5.43

Compare Source

Fixes
  • (help) In long help, list Possible Values before defaults, rather than after, for a more consistent look

v4.5.42

Compare Source

Fixes
  • Include subcommand visible long aliases in --help

v4.5.41

Compare Source

Features
  • Add Styles::context and Styles::context_value to customize the styling of [default: value] like notes in the --help

v4.5.40

Compare Source

Features
  • Support quoted ids in arg!() macro (e.g. arg!("check-config": ...))

v4.5.39

Compare Source

Fixes
  • (help) Show short flag aliases before long
  • (help) Merge the short and long flag alias lists

v4.5.38

Compare Source

Fixes
  • (help) When showing aliases, include leading -- or -

v4.5.37

Compare Source

Features
  • Added ArgMatches::try_clear_id()

v4.5.36

Compare Source

Fixes
  • (help) Revert 4.5.35's "Don't leave space for shorts if there are none" for now

v4.5.35

Compare Source

Fixes
  • (help) Align positionals and flags when put in the same help_heading
  • (help) Don't leave space for shorts if there are none

v4.5.34

Compare Source

Fixes
  • (help) Don't add extra blank lines with flatten_help(true) and subcommands without arguments

v4.5.33

Compare Source

Fixes
  • (error) When showing the usage of a suggestion for an unknown argument, don't show the group

v4.5.32

Compare Source

Features
  • Add Error::remove
Documentation
  • (cookbook) Switch from humantime to jiff
  • (tutorial) Better cover required vs optional
Internal
  • Update pulldown-cmark

v4.5.31

Compare Source

Features
  • Add ValueParserFactory for Saturating<T>

v4.5.30

Compare Source

Fixes
  • (assert) Allow num_args(0..=1) to be used with SetTrue
  • (assert) Clean up rendering of takes_values assertions

v4.5.29

Compare Source

Fixes
  • Change ArgMatches::args_present so not-present flags are considered not-present (matching the documentation)

v4.5.28

Compare Source

Features
  • (derive) Unstable support for full markdown syntax for doc comments, enabled with unstable-markdown

v4.5.27

Compare Source

Documentation
  • Iterate on tutorials and reference based on feedback

v4.5.26

Compare Source

Fixes
  • (error) Reduce binary size with the suggestions feature

v4.5.25

Compare Source

Fixes
  • (help) Reduce binary size

v4.5.24

Compare Source

Fixes
  • (parser) Correctly handle defaults with ignore_errors(true) and when a suggestion is provided for an unknown argument

v4.5.23

Compare Source

Fixes
  • (parser) When check allow_negative_numbers, allow E again

v4.5.22

Compare Source

Fixes
  • (assert) Catch bugs with arguments requiring themself

v4.5.21

Compare Source

Fixes
  • (parser) Ensure defaults are filled in on error with ignore_errors(true)

v4.5.20

Compare Source

Features
  • (unstable) Add CommandExt

v4.5.19

Compare Source

Internal
  • Update dependencies

v4.5.18

Compare Source

Features
  • (builder) Expose Arg::get_display_order and Command::get_display_order

v4.5.17

Compare Source

Fixes
  • (help) Style required argument groups
  • (derive) Improve error messages when unsupported fields are used

v4.5.16

Compare Source

Fixes
  • (derive) Improve error messages when derive feature is missing

v4.5.15

Compare Source

Compatiblity
  • (unstable-ext) Arg::remove changed return types
Fixes
  • (unstable-ext) Make Arg::remove return the removed item

v4.5.14

Compare Source

Features
  • (unstable-ext) Added Arg::add for attaching arbitrary state, like completion hints, to Arg without Arg knowing about it

v4.5.13

Compare Source

Fixes
  • (derive) Improve error message when #[flatten]ing an optional #[group(skip)]
  • (help) Properly wrap long subcommand descriptions in help

v4.5.12

Compare Source

v4.5.11

Compare Source

v4.5.10

Compare Source

v4.5.9

Compare Source

Fixes
  • (error) When defining a custom help flag, be sure to suggest it like we do the built-in one

v4.5.8

Compare Source

Fixes
  • Reduce extra flushes

v4.5.7

Compare Source

Fixes
  • Clean up error message when too few arguments for num_args

v4.5.6

Compare Source

v4.5.5

Compare Source

Fixes
  • Allow exclusive to override required_unless_present, required_unless_present_any, required_unless_present_all

v4.5.4

Compare Source

Documentation
  • Add a new CLI Concepts document as another way of framing clap
  • Expand the typed_derive cookbook entry

v4.5.3

Compare Source

Fixes
  • (help) Show short flag aliases before long
  • (help) Merge the short and long flag alias lists

v4.5.2

Compare Source

Fixes
  • Change ArgMatches::args_present so not-present flags are considered not-present (matching the documentation)

v4.5.1

Compare Source

Internal
  • Update dependencies

v4.5.0

Compare Source

Compatibility
  • Update MSRV to 1.74

v4.4.18

Compare Source

Fixes
  • (error) When lacking usage feature, ensure the list of required arguments is unique

v4.4.17

Compare Source

Fixes
  • Fix panic! when mixing args_conflicts_with_subcommands with ArgGroup (which is implicit with derive) introduced in 4.4.15

v4.4.16

Compare Source

Fixes
  • Ensure invalid escape sequences in user-defined strings are correctly stripped when terminal doesn't support color

v4.4.15

Compare Source

Fixes
  • Improve error for args_conflicts_with_subcommands
  • Ensure we error for args_conflicts_with_subcommands when using subcommand short and long flags

v4.4.14

Compare Source

Documentation
  • Fix find cookbook entry to allow repeats of flags/options
Features
  • Allow num_args(0) on options which allows making them emulate being a flag for position-tracking flags

v4.4.13

Compare Source

Documentation
  • Fix link to structopt migration guide

v4.4.12

Compare Source

Performance
  • Only ask TypedValueParser for possible values if needed

v4.4.11

Compare Source

Features
  • Add Command::mut_group

v4.4.10

Compare Source

Documentation
  • Link out to changelog
  • Cross link derive's attribute reference to derive tutorial

v4.4.9

Compare Source

Fixes
  • (help) Show correct Command::about under flattened headings
  • (help) Respect hide when flattening subcommands

v4.4.8

Compare Source

Features
  • Add Command::flatten_help to allow git stash -h like help for subcommands

v4.4.7

Compare Source

Performance
  • Reduced code size

v4.4.6

Compare Source

Internal
  • Upgrade anstream

v4.4.5

Compare Source

Fixes
  • (parser) When inferring subcommand name or long_flag, allow ambiguous-looking matches that unambiguously map back to the same command
  • (parser) When inferring subcommand long_flag, don't panic
  • (assert) Clarify what action is causing a positional that doesn't set values which is especially useful for derive users

v4.4.4

Compare Source

Internal
  • Update terminal_size to 0.3

v4.4.3

Compare Source

Documentation
  • (derive) Clarify use of attributes within the tutorial
  • Split sections in the builder and derive tutorials into separate modules

v4.4.2

Compare Source

Performance
  • Improve build times by removing once_cell dependency

v4.4.1

Compare Source

Fixes
  • (error) When lacking usage feature, ensure the list of required arguments is unique

v4.4.0

Compare Source

compatibility
  • update msrv to 1.70.0

v4.3.24

Compare Source

Fixes
  • Ensure column padding is preserved in --help with custom templates

v4.3.23

Compare Source

Fixes
  • Fixed UnknownArgumentValueParser to not error on flag's absence

v4.3.22

Compare Source

Features
  • Add UnknownArgumentValueParser for injecting errors for improving the experience with errors

v4.3.21

Compare Source

Features
  • Expose TryMapValueParser so the type can be named

v4.3.20

Compare Source

Features
  • Command::mut_args for modifying all arguments en masse

v4.3.19

Compare Source

Fixes
  • (parse) Respect value_terminator even in the presence of later multiple-value positional arguments

v4.3.18

Compare Source

Fixes
  • (parse) Suggest -- in fewer places where it won't work

v4.3.17

Compare Source

Fixes
  • (help) Address a regression in wrapping PossibleValue descriptions in --help

v4.3.16

Compare Source

Fixes
  • Don't assert when stateful value parsers fail on defaults (e.g. checking if a path exists)

v4.3.15

Compare Source

Features
  • (unstable-styles) Re-export anstyle
Documentation
  • (unstable-styles) Provide more examples

v4.3.14

Compare Source

Features
  • ArgAction::HelpShort and ArgAction::HelpLong for explicitly specifying which style of help to display
Fixes
  • Skip [OPTIONS] in usage if a help or version ArgAction is used

v4.3.13

Compare Source

v4.3.12

Compare Source

Fixes
  • (derive) Don't error on enum variant field attributes

v4.3.11

Compare Source

Features
  • (derive) Support fields wrapped in num::Wrapping, Box, or Arc
  • (derive) Support Box<str>, Box<OsStr>, and Box<Path>

v4.3.10

Compare Source

Performance
  • Drop a dependency, reducing binary size by 1.3 KiB

v4.3.9

Compare Source

Fixes
  • Command::ignore_errors no longer masks help/version

v4.3.8

Compare Source

Fixes
  • Error on ambiguity with infer_long_arg, rather than arbitrarily picking one, matching the documentation and subcommand's behavior

v4.3.7

Compare Source

Documentation
  • Further clarify magic behavior in derive tutorial
  • Further clarify derive API's relationship to builder within the tutorial

v4.3.6

Compare Source

Documentation
  • Suggest clio

v4.3.5

Compare Source

  • ColorChoice::possible_values is added to simplify things for builder users
Fixes
  • ColorChoice::to_possible_value no longer includes descriptions, encouraging shorter help where possible

v4.3.4

Compare Source

Features
  • Add Error::exit_code

v4.3.3

Compare Source

Features
  • Command::defer for delayed initialization of subcommands to reduce startup times of large applications like deno

v4.3.2

Compare Source

Fixes
  • Ensure column padding is preserved in --help with custom templates

v4.3.1

Compare Source

Fixes
  • (parse) Respect value_terminator even in the presence of later multiple-value positional arguments

v4.3.0

Compare Source

Fixes
  • (assert) Allow multiple, value-terminated, positional arguments
  • (assert) Clear up language on last assertion
  • (parser) Correctly assign values to arguments when using multiple, value-termianted, positional arguments
  • (parser) Ensure value_terminator has higher precedence than allow_hyphen_values
  • (help) Only use next-line-help on subcommand list when explicitly specified, not just with --help
  • (help) Correctly align possible values list
  • (help) Don't waste code, vertical space in moving possible value descriptions to next line

v4.2.7

Compare Source

Fixes
  • Correctly track remaining length for iterators provided by ArgMatches

v4.2.6

Compare Source

Features
  • impl Eq<std::any::TypeId> for clap_builder::util::AnyValueId

v4.2.5

Compare Source

Fixes
  • Improve panic when a group requires a non-existent ID

v4.2.4

Compare Source

Documentation
  • Corrected docs for Command::style

v4.2.3

Compare Source

Features
  • Command::styles for theming help/errors (behind unstable-styles)

v4.2.2

Compare Source

Internal
  • Update dependencies

v4.2.1

Compare Source

Fixes
  • Don't highlight uninteresting parts of the error message

v4.2.0

Compare Source

Compatibility
  • Removed the languishing unstable-replace feature (open to discussion at #​2836)
  • Removed the stablized unstable-grouped feature
Features
  • Allow any StyledStr to accept text styled with ANSI escape codes
  • Respect CLICOLOR, CLICOLOR_FORCE
Fixes
  • Lighten the tone for "unexpected argument" errors (open to discussion at #​4638)

v4.1.14

Compare Source

Features
  • (derive) #[group] raw attribute support
Performance
  • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
  • os_str_bytes dependency was removed for faster builds and smaller binaries

v4.1.13

Compare Source

Performance
  • Reduce repeated alloc calls when building a Command
  • Reduce duplicate dependencies for faster builds

v4.1.12

Compare Source

Internal
  • (derive) Update to syn v2
Performance
  • (derive) Faster build times by dropping proc-macro-error dependency

v4.1.11

Compare Source

Internal
  • Update bitflags

v4.1.10

Compare Source

Fixes
  • (help) On Windows, avoid underlined text artifacts

v4.1.9

Compare Source

Fixes
  • (assert) Improve the assert when using the wrong action with get_count / get_flag

v4.1.8

Compare Source

Fixes
  • (derive) Don't deny lints on the users behalf

v4.1.7

Compare Source

Fixes
  • (derive) Hide some nightly clippy warnings

v4.1.6

Compare Source

Fixes
  • (help) Don't show long help for --help just because hidden possible values include a description

v4.1.5

Compare Source

Fixes
  • (help) Don't show long help for --help just because a hidden arg has a possible value with a description

v4.1.4

Compare Source

Fixes
  • (help) Respect disable_colored_help when using arg_required_else_help
Performance
  • Speed up compiling arg! macro

v4.1.3

Compare Source

Fixes
  • (error) Improve suggested flag/value/subcommand when two share a long preifx
  • (error) When suggesting one of several subcommands, use the plural subcommands, rather than subcommand

v4.1.2

Compare Source

Fixes
  • In documentation, refer to get_flag, rather than get_one::<bool>

v4.1.1

Compare Source

Features
  • (derive) #[group] raw attribute support
Performance
  • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
  • os_str_bytes dependency was removed for faster builds and smaller binaries

v4.1.0

Compare Source

Compatibility

MSRV changed to 1.64.0

For apps with custom --help and --version flags:

  • Descriptions for --help and --version changed

When apps have errors imitating clap's error style:

  • Error message style was changed, including
    • Moving away from "did you mean" to tips
    • Leading letter is lower case
    • "For more" added some punctuation
Features
  • ArgMatches::get_occurrences support for argument values to be grouped by their occurrence
Fixes
  • (derive) Allow upgrade_from when arguments / subcommands are explicitly marked as required
  • (help) Try be more clearer and succinct with --help and --version (also helps with overflow)
  • (error) Try to be more clearer and succinct with error messages
  • (error) Officially adopt an error style guide

v4.0.32

Compare Source

Fixes
  • (parser) When overriding required(true), consider args that conflict with its group

v4.0.31

Compare Source

Performance
  • Speed up parsing when a lot of different flags are present (100 unique flags)

v4.0.30

Compare Source

Fixes
  • (error) Improve error for args_conflicts_with_subcommand

v4.0.29

Compare Source

v4.0.28

Compare Source

Fixes
  • Fix wasm support which was broken in 4.0.27

v4.0.27

Compare Source

Features
  • Have Arg::value_parser accept Vec<impl Into<PossibleValue>>
  • Implement Display and FromStr for ColorChoice
Fixes
  • Remove soundness issue by switching from atty to is-terminal

v4.0.26

Compare Source

Fixes
  • (error) Fix typos in ContextKind::as_str

v4.0.25

Compare Source

Features
  • (error) Report available subcommands when required subcommand is missing

v4.0.24

Compare Source

Fixes
  • Avoid panic when printing an argument that isn't built

v4.0.23

Compare Source

Fixes
  • Don't panic on reporting invalid-long errors when followed by invalid UTF8
  • (help) Clarified argument to help subcommand

v4.0.22

Compare Source

Fixes
  • (help) Don't overflow into next-line-help early due to stale (pre-v4) padding calculations

v4.0.21

Compare Source

Features
  • (derive) long_about and long_help attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)

v4.0.20

Compare Source

Fixes
  • (derive) Allow defaulted value parser for '()' fields

v4.0.19

Compare Source

Features
  • ColorChoice now implements ValueEnum

v4.0.18

Compare Source

Fixes
  • (derive) Allow #[command(skip)] to also work with enum variants with a value

v4.0.17

Compare Source

Fixes
  • Allow using Arg::last(true) with Arg::value_hint(ValueHint::CommandWithArguments)

v4.0.16

Compare Source

Fixes
  • Arg::exclusive(true) should not be exclusive with the argument's own ArgGroup

v4.0.15

Compare Source

Fixes
  • (error) Don't suggest -- when it doesn't help
  • (error) Be more consistent in quoting, punctuation, and indentation in errors

v4.0.14

Compare Source

Fixes
  • Only put ArgGroup in ArgMatches when explicitly specified, fixing derives handling of option-flattened fields (#​4375)

v4.0.13

Compare Source

Features
  • (derive) Allow () for fields to mean "don't read" (#​4371)

v4.0.12

Compare Source

Features
  • Added TypedValueParser::try_map for when adapting an existing TypedValueParser can fail
  • (error) Create errors like clap with Error::new, Error::with_cmd, and Error::insert

v4.0.11

Compare Source

Fixes
  • (help) Fix wrapping calculations with ANSI escape codes

v4.0.10

Compare Source

Features

v4.0.9

Compare Source

Fixes
  • (derive) Process doc comments for #[command(subcommand)] like in clap v3

v4.0.8

Compare Source

Fixes
  • (derive) Remove a low-value assert preventing defaulting Help and Version actions

v4.0.7

Compare Source

Features
  • (derive) Populate implicit ArgGroup (#​3165)
Fixes
  • (derive) Support #[group(skip)] on Parser derive
  • (derive) Tell users about implicit arg groups when running into group name conflicts
  • (error) Don't report unrelated groups in conflict or requires errors

v4.0.6

Compare Source

Features

v4.0.5

Compare Source

v4.0.4

Compare Source

Fixes
  • (error) Specialize the self-conflict error to look like clap v3

v4.0.3

Compare Source

Fixes
  • (parser) When overriding required(true), consider args that conflict with its group

v4.0.2

Compare Source

v4.0.1

Compare Source

Features
  • ColorChoice now implements ValueEnum

v4.0.0

Compare Source

Highlights

Arg::num_args(range)

Clap has had several ways for controlling how many values will be captured without always being clear on how they interacted, including

  • Arg::multiple_values(true)
  • Arg::number_of_values(4)
  • Arg::min_values(2)
  • Arg::max_values(20)
  • Arg::takes_value(true)

These have now all been collapsed into Arg::num_args which accepts both
single values and ranges of values. num_args controls how many raw arguments
on the command line will be captured as values per occurrence and independent
of value delimiters.

See Issue 2688 for more background.

Polishing Help

Clap strives to give a polished CLI experience out of the box with little
ceremony. With some feedback that has accumulated over time, we took this
release as an opportunity to re-evaluate our --help output to make sure it is
meeting that goal.

In doing this evaluation, we wanted to keep in mind:

  • Whether other CLIs had ideas that make sense to apply
  • Providing an experience that fits within the rest of applications and works across all shells

Before:

git
A fictional versioning CLI

USAGE:
    git <SUBCOMMAND>

OPTIONS:
    -h, --help    Print help information

SUBCOMMANDS:
    add      adds things
    clone    Clones repos
    help     Print this message or the help of the given subcommand(s)
    push     pushes things
    stash

After:

A fictional versioning CLI

Usage: git <COMMAND>

Commands:
  clone  Clones repos
  push   pushes things
  add    adds things
  stash
  help   Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help information
  • name/version header was removed because we couldn't justify the space it occupied when
    • Usage already includes the name
    • --version is available for showing the same thing (if the program has a version set)
  • Usage was dropped to one line to save space
  • Focus is put on the subcommands
  • Headings are now Title case
  • The more general term "command" is used rather than being explicit about being "subcommands"
  • The output is more dense with the expectation that it won't affect legibility but will allow more content
  • We've moved to a more neutral palette for highlighting elements (not highlighted above)

In talking to users, we found some that liked clap's man-like experience.
When deviating from this, we are making the assumption that those are more
power users and that the majority of users wouldn't look as favorably on being
consistent with man.

See Issue 4132 for more background.

More Dynamicism

Clap's API has focused on &str for performance but this can make
dealing with owned data difficult, like #[arg(default_value_t)] generating a
String from the default value.

Additionally, to avoid ArgMatches from borrowing (and for some features we
decided to forgo), clap took the &str argument IDs and hashed them. This
prevented us from providing a usable API for iterating over existing arguments.

Now clap has switched to a string newtype that gives us the flexibility to
decide whether to use &'static str, Cow<'static, str> for fast dynamic behavior, or
Box<str> for dynamic behavior with small binary size.

As an extension of that work, you can now call ArgMatches::ids to iterate
over the arguments and groups that were found when parsing. The newtype Id
was used to prevent some classes of bugs and to make it easier to understand
when opaque Ids are used vs user-visible strings.

Clearing Out Deprecations

Instead of doing all development on clap 4.0.0, we implemented a lot of new features during clap 3's development, deprecating the old API while introducing the new API, including:

  • Replacing the implicit behavior for args when parsing them with ArgAction
  • Replacing various one-off forms of value validation with the ValueParser API
    • Allowing derives to automatically do the right thing for PathBuf (allowing invalid UTF-8)
  • Replacing AppSettings and ArgSettings enums with getters/setters
  • Clarifying terms and making them more consistent
Migrating

Steps:

  1. Upgrade to v3 if you haven't already
  2. Add CLI tests (including example below), -h and --help output at a minimum (recommendation: trycmd for snapshot testing)
  3. If using Builder API: Explicitly set the arg.action(ArgAction::...) on each argument (StoreValue for options and IncOccurrences for flags)
  4. Run cargo check --features clap/deprecated and resolve all deprecation warnings
  5. Upgrade to v4
  6. Update feature flags
  • If default-features = false, run cargo add clap -F help,usage,error-context
  • Run cargo add clap -F wrap_help unless you want to hard code line wraps
  1. Resolve compiler errors
  2. Resolve behavior changes (see "subtle changes" under BREAKING CHANGES)
  3. At your leisure: resolve new deprecation notices

Example test (derive):

#[derive(clap::Parser)]
struct Cli {
    ...
}

#[test]
fn verify_cli() {
    use clap::CommandFactory;
    Cli::command().debug_assert()
}

Example test (builder):

fn cli() -> clap::Command {
    ...
}

#[test]
fn verify_cli() {
    cli().debug_assert();
}

Note: the idiomatic / recommended way of specifying different types of args in the Builder API has changed:

Before

.arg(Arg::new("flag").long("flag"))  # --flag
.arg(Arg::new("option").long("option").takes_value(true))  # --option <option>

After:

.arg(Arg::new("flag").long("flag").action(ArgAction::SetTrue))  # --flag
.arg(Arg::new("option").long("option"))  # --option <option>

In particular, num_args (the replacement for takes_value) will default appropriately
from the ArgAction and generally only needs to be set explicitly for the
other num_args use cases.

Breaking Changes

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

  • arg! now sets one of (#​3795):
    • ArgAction::SetTrue, requiring ArgMatches::get_flag instead of ArgMatches::is_present
    • ArgAction::Count, requiring ArgMatches::get_count instead of ArgMatches::occurrences_of
    • ArgAction::Set, requiring ArgMatches::get_one instead of ArgMatches::value_of
    • ArgAction::Append, requiring ArgMatches::get_many instead of ArgMatches::values_of
  • ArgAction::Set, ArgAction::SetTrue, and Arg::Action::SetFalse now
    conflict by default to be like ArgAction::StoreValue and
    ArgAction::IncOccurrences, requiring cmd.args_override_self(true) to override instead (#​4261)
  • By default, an Args default action is ArgAction::Set, rather than ArgAction::IncOccurrence to reduce confusing magic through consistency (#​2687, #​4032, see also #​3977)
  • mut_arg can no longer be used to customize help and version arguments, instead disable them (Command::disable_help_flag, Command::disable_version_flag) and provide your own (#​4056)
  • Removed lifetimes from Command, Arg, ArgGroup, and PossibleValue, assuming 'static. string feature flag will enable support for Strings (#​1041, #​2150, #​4223)
  • arg!(--flag <value>) is now optional, instead of required. Add .required(true) at the end to restore the original behavior (#​4206)
  • Added default feature flags, help, usage and error-context, requiring adding them back in if default-features = false (#​4236)
  • (parser) Always fill in "" argument for external subcommands to make it easier to distinguish them from built-in commands (#​3263)
  • (parser) Short flags now have higher precedence than hyphen values with Arg::allow_hyphen_values, to be consistent with Command::allow_hyphen_values (#​4187)
  • (parser) Arg::value_terminator must be its own argument on the CLI rather than being in a delimited list (#​4025)
  • (help) Line wrapping of help is now behind the existing wrap_help feature flag, either enable it or hard code your wraps (#​4258)
  • (help) Make DeriveDisplayOrder the default and removed the setting. To sort help, set next_display_order(None) (#​2808)
  • (help) Subcommand display order respects Command::next_display_order instead of DeriveDisplayOrder and using its own initial display order value (#​2808)
  • (help) Subcommands are now listed before arguments. To get the old behavior, see Command::help_template (#​4132)
  • (help) Help headings are now title cased, making any user-provided help headings inconsistent. To get the old behavior, see Command::help_template, Arg::help_heading, and Command::subcommand_help_heading (#​4132)
  • (help) "Command" is used as the section heading for subcommands and COMMAND for the value name. To get the old behavior, see Command::subcommand_help_heading and Arg::subcommand_value_name (#​4132, #​4155)
  • (help) Whitespace in help output is now trimmed to ensure consistency regardless of how well a template matches the users needs. (#​4132, #​4156)
  • (help) name/version/author are removed by default from help output. To get the old behavior, see Command::help_template. (#​4132, #​4160)
  • (help) Indentation for second-line usage changed. (#​4132, #​4188)
  • (env) Parse --help and --version like any ArgAction::SetTrue flag (#​3776)
  • (derive) Leave Arg::id as verbatim casing, requiring updating of string references to other args like in conflicts_with or requires (#​3282)
  • (derive) Doc comments for ValueEnum variants will now show up in --help (#​3312)
  • (derive) When deriving Args, and ArgGroup is created using the type's name, reserving it for future use (#​2621, #​4209)
  • (derive) next_help_heading can now leak out of a #[clap(flatten)], like all other command settings (#​4222)

Easier to catch changes:

  • Looking up a group in ArgMatches now returns the arg Ids, rather than the values to reduce overhead and offer more flexibility. ([#​4072](https://redirect.gi

Configuration

📅 Schedule: Branch creation - "after 9pm,before 6am" in timezone Europe/Zurich, Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, 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 was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the dependencies Pull requests that update a dependency file label Oct 5, 2022
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 1330456 to a12b254 Compare October 5, 2022 22:42
@renovate renovate bot force-pushed the renovate/clap-4.x branch from a12b254 to 230f15d Compare November 20, 2022 10:41
@renovate renovate bot force-pushed the renovate/clap-4.x branch 3 times, most recently from 164032b to 5511c90 Compare March 24, 2023 01:42
@renovate renovate bot force-pushed the renovate/clap-4.x branch 2 times, most recently from 9f40760 to b3a613b Compare March 30, 2023 11:40
@renovate renovate bot force-pushed the renovate/clap-4.x branch 2 times, most recently from 9cc0339 to 58f9c11 Compare June 3, 2023 11:15
@renovate renovate bot force-pushed the renovate/clap-4.x branch 2 times, most recently from 56b6f87 to c16a768 Compare June 15, 2023 02:49
@renovate renovate bot force-pushed the renovate/clap-4.x branch 2 times, most recently from 19caad4 to 1b5411b Compare June 24, 2023 04:55
@renovate renovate bot force-pushed the renovate/clap-4.x branch 2 times, most recently from 755008b to 6b68cef Compare June 30, 2023 05:27
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 6b68cef to f2fe4fa Compare July 6, 2023 05:41
@renovate renovate bot force-pushed the renovate/clap-4.x branch 4 times, most recently from 8d1ca13 to 8b2e10c Compare July 20, 2023 11:53
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 8b2e10c to fbfec4a Compare July 22, 2023 02:33
@renovate renovate bot force-pushed the renovate/clap-4.x branch from fbfec4a to 7294fad Compare August 8, 2023 17:38
@renovate renovate bot force-pushed the renovate/clap-4.x branch 3 times, most recently from dd0f3dc to fc455b1 Compare August 24, 2023 05:40
@renovate renovate bot force-pushed the renovate/clap-4.x branch 3 times, most recently from edf001c to ad80cc1 Compare September 1, 2023 05:24
@renovate renovate bot force-pushed the renovate/clap-4.x branch from ad80cc1 to 114e76a Compare September 12, 2023 23:46
@renovate renovate bot force-pushed the renovate/clap-4.x branch 2 times, most recently from 454dd14 to 786c74c Compare September 26, 2023 05:51
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 786c74c to 2067cc1 Compare September 29, 2023 03:01
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 2067cc1 to 84c5117 Compare October 24, 2023 23:17
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 84c5117 to 4ffecc5 Compare November 11, 2023 08:40
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 4ffecc5 to b6e6152 Compare November 28, 2023 05:46
@renovate renovate bot force-pushed the renovate/clap-4.x branch from b6e6152 to 061c68d Compare December 5, 2023 20:57
@renovate renovate bot force-pushed the renovate/clap-4.x branch 2 times, most recently from 1522a93 to 7f12faa Compare January 5, 2024 05:42
@renovate renovate bot force-pushed the renovate/clap-4.x branch 4 times, most recently from b62b32f to 40d3864 Compare January 16, 2024 08:54
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 40d3864 to 6a56b1a Compare January 18, 2024 05:29
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 6a56b1a to 86590f2 Compare February 9, 2024 08:02
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 86590f2 to 11a4191 Compare February 17, 2024 08:29
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 11a4191 to 3440c79 Compare March 7, 2024 05:32
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 3440c79 to 2389011 Compare March 16, 2024 14:52
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 2389011 to f1f4451 Compare March 27, 2024 23:50
@renovate renovate bot force-pushed the renovate/clap-4.x branch from f1f4451 to 404797a Compare May 6, 2024 11:41
@renovate renovate bot force-pushed the renovate/clap-4.x branch 2 times, most recently from e177460 to 5485175 Compare August 7, 2025 03:25
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 5485175 to 18f168e Compare August 13, 2025 23:40
@renovate renovate bot force-pushed the renovate/clap-4.x branch 2 times, most recently from be7a164 to 646d111 Compare September 3, 2025 03:09
@renovate renovate bot force-pushed the renovate/clap-4.x branch from 646d111 to 7376b53 Compare September 20, 2025 06:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file
Development

Successfully merging this pull request may close these issues.

0 participants