clap-rs/clap
### [`v3.2.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#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 ([#3832](https://togithub.com/clap-rs/clap/issues/3832))
### [`v3.2.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#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 ([#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#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)]` ([#3827](https://togithub.com/clap-rs/clap/issues/3827))
### [`v3.2.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#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#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 ([#3732](https://togithub.com/clap-rs/clap/issues/3732))
Behavior
- Defaults no longer satisfy `required` and its variants ([#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` ([#3799](https://togithub.com/clap-rs/clap/issues/3799))
Replaced
- `Arg::allow_invalid_utf8` with `Arg::value_parser(value_parser!(PathBuf))` ([#3753](https://togithub.com/clap-rs/clap/issues/3753))
- `Arg::validator` / `Arg::validator_os` with `Arg::value_parser` ([#3753](https://togithub.com/clap-rs/clap/issues/3753))
- `Arg::validator_regex` with users providing their own `builder::TypedValueParser` ([#3756](https://togithub.com/clap-rs/clap/issues/3756))
- `Arg::forbid_empty_values` with `builder::NonEmptyStringValueParser` / `builder::PathBufValueParser` ([#3753](https://togithub.com/clap-rs/clap/issues/3753))
- `Arg::possible_values` with `Arg::value_parser([...])`, `builder::PossibleValuesParser`, or `builder::EnumValueParser` ([#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 ([#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` ([#3772](https://togithub.com/clap-rs/clap/issues/3772), [#3797](https://togithub.com/clap-rs/clap/issues/3797))
- `Command::args_override_self` with `ArgAction::Set` ([#2627](https://togithub.com/clap-rs/clap/issues/2627), [#3797](https://togithub.com/clap-rs/clap/issues/3797))
- `AppSettings::NoAutoVersion` with `ArgAction` or `Command::disable_version_flag` ([#3800](https://togithub.com/clap-rs/clap/issues/3800))
- `AppSettings::NoHelpVersion` with `ArgAction` or `Command::disable_help_flag` / `Command::disable_help_subcommand` ([#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}` ([#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}` ([#3753](https://togithub.com/clap-rs/clap/issues/3753))
- `ArgMatches::is_valid_arg` with `ArgMatches::{try_get_one,try_get_many}` ([#3753](https://togithub.com/clap-rs/clap/issues/3753))
- `ArgMatches::occurrences_of` with `ArgMatches::value_source` or `ArgAction::Count` ([#3797](https://togithub.com/clap-rs/clap/issues/3797))
- `ArgMatches::is_present` with `ArgMatches::contains_id` or `ArgAction::SetTrue` ([#3797](https://togithub.com/clap-rs/clap/issues/3797))
- `ArgAction::StoreValue` with `ArgAction::Set` or `ArgAction::Append` ([#3797](https://togithub.com/clap-rs/clap/issues/3797))
- `ArgAction::IncOccurrences` with `ArgAction::SetTrue` or `ArgAction::Count` ([#3797](https://togithub.com/clap-rs/clap/issues/3797))
- *(derive)* `#[clap(parse(...))]` replaced with: ([#3589](https://togithub.com/clap-rs/clap/issues/3589), [#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)]` ([#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` ([#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}` ([#2683](https://togithub.com/clap-rs/clap/issues/2683), [#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 ([#3732](https://togithub.com/clap-rs/clap/issues/3732)) and open to expansion via the `ValueParserFactory` trait ([#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 ([#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 ([#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 ([#3732](https://togithub.com/clap-rs/clap/issues/3732))
- Explicit control over parsing via `Arg::action` ([#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`) ([#3777](https://togithub.com/clap-rs/clap/issues/3777))
- `ArgAction::Append`: like `Arg::multiple_occurrences` ([#3777](https://togithub.com/clap-rs/clap/issues/3777))
- `ArgAction::SetTrue`: Treat `--flag` as `--flag=true` ([#3775](https://togithub.com/clap-rs/clap/issues/3775))
- Implies `Arg::default_value("false")` ([#3786](https://togithub.com/clap-rs/clap/issues/3786))
- Parses `Arg::env` via `Arg::value_parser`
- `ArgAction::SetFalse`: Treat `--flag` as `--flag=false` ([#3775](https://togithub.com/clap-rs/clap/issues/3775))
- Implies `Arg::default_value("true")` ([#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` ([#3775](https://togithub.com/clap-rs/clap/issues/3775))
- Implies `Arg::default_value("0")` ([#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)]` ([#3589](https://togithub.com/clap-rs/clap/issues/3589), [#3742](https://togithub.com/clap-rs/clap/issues/3742)) / `#[clap(action)]` attributes ([#3794](https://togithub.com/clap-rs/clap/issues/3794))
- Default `ValueParser` is determined by `value_parser!` ([#3199](https://togithub.com/clap-rs/clap/issues/3199), [#3496](https://togithub.com/clap-rs/clap/issues/3496))
- Default `ArgAction` is determine by a hard-coded lookup on the type ([#3794](https://togithub.com/clap-rs/clap/issues/3794))
- `Command::multicall` is now stable for busybox-like programs and REPLs ([#2861](https://togithub.com/clap-rs/clap/issues/2861), [#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`([#3815](https://togithub.com/clap-rs/clap/issues/3815))
*parser*
- Set `ArgMatches::value_source` and `ArgMatches::occurrences_of` for external subcommands ([#3732](https://togithub.com/clap-rs/clap/issues/3732))
- Use value delimiter for `Arg::default_missing_values` ([#3761](https://togithub.com/clap-rs/clap/issues/3761), [#3765](https://togithub.com/clap-rs/clap/issues/3765))
- Split`Arg::default_value` / `Arg::env` on value delimiters independent of whether `--` was used ([#3765](https://togithub.com/clap-rs/clap/issues/3765))
- Allow applying defaults to flags ([#3294](https://togithub.com/clap-rs/clap/issues/3294), 3775)
- Defaults no longer satisfy `required` and its variants ([#3793](https://togithub.com/clap-rs/clap/issues/3793))
Configuration
π Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ Automerge: Enabled.
β» 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, click this checkbox.
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
3.1.18
->3.2.4
Release Notes
clap-rs/clap
### [`v3.2.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#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 ([#3832](https://togithub.com/clap-rs/clap/issues/3832)) ### [`v3.2.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#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 ([#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#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)]` ([#3827](https://togithub.com/clap-rs/clap/issues/3827)) ### [`v3.2.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#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#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 ([#3732](https://togithub.com/clap-rs/clap/issues/3732)) Behavior - Defaults no longer satisfy `required` and its variants ([#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` ([#3799](https://togithub.com/clap-rs/clap/issues/3799)) Replaced - `Arg::allow_invalid_utf8` with `Arg::value_parser(value_parser!(PathBuf))` ([#3753](https://togithub.com/clap-rs/clap/issues/3753)) - `Arg::validator` / `Arg::validator_os` with `Arg::value_parser` ([#3753](https://togithub.com/clap-rs/clap/issues/3753)) - `Arg::validator_regex` with users providing their own `builder::TypedValueParser` ([#3756](https://togithub.com/clap-rs/clap/issues/3756)) - `Arg::forbid_empty_values` with `builder::NonEmptyStringValueParser` / `builder::PathBufValueParser` ([#3753](https://togithub.com/clap-rs/clap/issues/3753)) - `Arg::possible_values` with `Arg::value_parser([...])`, `builder::PossibleValuesParser`, or `builder::EnumValueParser` ([#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 ([#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` ([#3772](https://togithub.com/clap-rs/clap/issues/3772), [#3797](https://togithub.com/clap-rs/clap/issues/3797)) - `Command::args_override_self` with `ArgAction::Set` ([#2627](https://togithub.com/clap-rs/clap/issues/2627), [#3797](https://togithub.com/clap-rs/clap/issues/3797)) - `AppSettings::NoAutoVersion` with `ArgAction` or `Command::disable_version_flag` ([#3800](https://togithub.com/clap-rs/clap/issues/3800)) - `AppSettings::NoHelpVersion` with `ArgAction` or `Command::disable_help_flag` / `Command::disable_help_subcommand` ([#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}` ([#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}` ([#3753](https://togithub.com/clap-rs/clap/issues/3753)) - `ArgMatches::is_valid_arg` with `ArgMatches::{try_get_one,try_get_many}` ([#3753](https://togithub.com/clap-rs/clap/issues/3753)) - `ArgMatches::occurrences_of` with `ArgMatches::value_source` or `ArgAction::Count` ([#3797](https://togithub.com/clap-rs/clap/issues/3797)) - `ArgMatches::is_present` with `ArgMatches::contains_id` or `ArgAction::SetTrue` ([#3797](https://togithub.com/clap-rs/clap/issues/3797)) - `ArgAction::StoreValue` with `ArgAction::Set` or `ArgAction::Append` ([#3797](https://togithub.com/clap-rs/clap/issues/3797)) - `ArgAction::IncOccurrences` with `ArgAction::SetTrue` or `ArgAction::Count` ([#3797](https://togithub.com/clap-rs/clap/issues/3797)) - *(derive)* `#[clap(parse(...))]` replaced with: ([#3589](https://togithub.com/clap-rs/clap/issues/3589), [#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)]` ([#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` ([#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}` ([#2683](https://togithub.com/clap-rs/clap/issues/2683), [#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 ([#3732](https://togithub.com/clap-rs/clap/issues/3732)) and open to expansion via the `ValueParserFactory` trait ([#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 ([#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 ([#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 ([#3732](https://togithub.com/clap-rs/clap/issues/3732)) - Explicit control over parsing via `Arg::action` ([#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`) ([#3777](https://togithub.com/clap-rs/clap/issues/3777)) - `ArgAction::Append`: like `Arg::multiple_occurrences` ([#3777](https://togithub.com/clap-rs/clap/issues/3777)) - `ArgAction::SetTrue`: Treat `--flag` as `--flag=true` ([#3775](https://togithub.com/clap-rs/clap/issues/3775)) - Implies `Arg::default_value("false")` ([#3786](https://togithub.com/clap-rs/clap/issues/3786)) - Parses `Arg::env` via `Arg::value_parser` - `ArgAction::SetFalse`: Treat `--flag` as `--flag=false` ([#3775](https://togithub.com/clap-rs/clap/issues/3775)) - Implies `Arg::default_value("true")` ([#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` ([#3775](https://togithub.com/clap-rs/clap/issues/3775)) - Implies `Arg::default_value("0")` ([#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)]` ([#3589](https://togithub.com/clap-rs/clap/issues/3589), [#3742](https://togithub.com/clap-rs/clap/issues/3742)) / `#[clap(action)]` attributes ([#3794](https://togithub.com/clap-rs/clap/issues/3794)) - Default `ValueParser` is determined by `value_parser!` ([#3199](https://togithub.com/clap-rs/clap/issues/3199), [#3496](https://togithub.com/clap-rs/clap/issues/3496)) - Default `ArgAction` is determine by a hard-coded lookup on the type ([#3794](https://togithub.com/clap-rs/clap/issues/3794)) - `Command::multicall` is now stable for busybox-like programs and REPLs ([#2861](https://togithub.com/clap-rs/clap/issues/2861), [#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`([#3815](https://togithub.com/clap-rs/clap/issues/3815)) *parser* - Set `ArgMatches::value_source` and `ArgMatches::occurrences_of` for external subcommands ([#3732](https://togithub.com/clap-rs/clap/issues/3732)) - Use value delimiter for `Arg::default_missing_values` ([#3761](https://togithub.com/clap-rs/clap/issues/3761), [#3765](https://togithub.com/clap-rs/clap/issues/3765)) - Split`Arg::default_value` / `Arg::env` on value delimiters independent of whether `--` was used ([#3765](https://togithub.com/clap-rs/clap/issues/3765)) - Allow applying defaults to flags ([#3294](https://togithub.com/clap-rs/clap/issues/3294), 3775) - Defaults no longer satisfy `required` and its variants ([#3793](https://togithub.com/clap-rs/clap/issues/3793))Configuration
π Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ Automerge: Enabled.
β» 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.
This PR has been generated by Mend Renovate. View repository job log here.