Ed Page
a7ed5d012d
fix(derive): Deprecate using name
for Args
...
The builder function was deprecated in v3 and removed in v4 but the
derive masked that, so we're still adapting things but now with a path
towards removal.
2022-09-02 19:57:37 -05:00
Ed Page
f9ad2c5f09
fix(derive): Guard against invalid attributes
...
We had some guards but this generalizes them and puts them on every
attribute.
2022-09-02 19:26:03 -05:00
Ed Page
707f47f435
fix(derive): Deprecate 'clap' attribute
2022-09-02 15:39:24 -05:00
Ed Page
2609b970a4
refactor(test): Update UI tests to new attributes
2022-09-02 15:23:04 -05:00
Ed Page
e0f2f6fbae
fix(derive): Builder-specialized attributes
2022-09-02 14:06:27 -05:00
Ed Page
dbdd449dc3
refactor(derive): Further generalize kind errors
2022-09-02 14:03:34 -05:00
Ed Page
97ce0c44f7
refactor(derive): Generalize Kind based error checks
2022-09-02 14:03:34 -05:00
Ed Page
59a4578898
refactor(derive): Track the item's Kind
2022-09-02 14:03:34 -05:00
Ed Page
0ae119fda9
fix(derive): Report deprecations for structopt attributes
...
This is more of a test bed for adding new attributes and deprecating
clap ones.
2022-09-02 14:03:31 -05:00
Ed Page
7b0c76de31
Revert "fix(derive): Remove structopt attribute support"
...
This reverts commit 521a012c28
.
2022-09-02 11:15:15 -05:00
Ed Page
7eaa226526
fix(derive): Provide deprecations for bald action/value_parser
...
These will be going away, so we should tell the user.
This is mostly a test bed for our new deprecation plumbing.
2022-09-02 11:14:31 -05:00
Ed Page
edce5c2119
fix(derive): Improve Kind conflict errors
...
This makes it better scale for the future
2022-09-02 10:48:38 -05:00
Ed Page
11ffcf9393
refactor(derive): Determine an Item's Kind first
...
This will allow the attribute processing to change based on the kind
2022-09-02 10:41:34 -05:00
Ed Page
c56277c084
refactor(derive): Make Sp copyable
2022-09-02 10:23:09 -05:00
Ed Page
6d44106e76
fix(derive): Remove helper for removed help_heading
2022-09-02 09:58:08 -05:00
Ed Page
5264a62181
perf(derive): Consolidate field/variant parsing
2022-09-01 13:54:43 -05:00
Ed Page
6e8b366107
perf(derive): Stop generating redundant code
2022-09-01 13:50:27 -05:00
Ed Page
a47462123c
refactor(derive): Only pass around what is needed
2022-09-01 13:21:57 -05:00
Ed Page
a86cb8a26c
refactor(derive): Rely on Self for enums
2022-09-01 12:14:55 -05:00
Ed Page
0b5f95e3a3
perf(derive): Further consolidate parsing of attrs
2022-09-01 12:04:10 -05:00
Ed Page
d8524b5ad1
refactor(derive): Clarify parse is really about attributes
2022-09-01 07:07:19 -05:00
Ed Page
d9844002e5
refactor(derive): Clarify we are dealing with API item
2022-08-31 21:19:26 -05:00
Ed Page
7242e22810
perf(derive): Reduce number of times attributes are parsed
2022-08-31 19:58:14 -05:00
Ed Page
78dc60bd37
refactor(derive): Be explicit in what is being parsed
2022-08-31 10:11:49 -05:00
Ed Page
36460aed08
fix: Deprecate _os variants
...
PR #4096 made them redundant
2022-08-29 12:42:30 -05:00
Ed Page
521a012c28
fix(derive): Remove structopt attribute support
2022-08-26 16:06:10 -05:00
Ed Page
c04fe2fa4b
refactor(derive): Allow carrying context with parsed attributes
2022-08-26 15:52:21 -05:00
Ed Page
f08575e4a3
refactor(derive): Simplify verbatim docs tracking
2022-08-26 14:44:04 -05:00
Ed Page
4e6733fbe5
fix(derive): Remove error case for default_value
2022-08-26 13:59:18 -05:00
Ed Page
b4b121d3a4
fix(derive): Remove deprecated arg_enum attribute
2022-08-26 13:34:16 -05:00
Miguel Fernandez
42cb87b4b6
fix: Amend error message when deriving enums
...
Clarify that only unit variants are fully supported, and that
non-unit variants must be skipped.
2022-08-26 11:08:39 +02:00
Ed Page
276c75cc08
fix: Don't pollute root with str types
2022-08-23 13:12:06 -05:00
Ed Page
1bbf07e574
fix: Prefer more usable &str
for reflection
...
The downside is we can't skip allocations with
- `ValueEnum` default values
- Vaid subcommands
Otherwise, this is a big ergonomic win.
2022-08-22 14:56:16 -05:00
Ed Page
85f541d789
fix: Switch to owned types
...
Impact:
- Binary size: 556.6 KiB to 578.4 KiB
- build time: 6.4950 us (7% slower)
- parse time: 7.7256 us
- parse sc time: 8.1580 us (5% faster)
Fixes #1041
Fixes #2150
2022-08-22 14:55:55 -05:00
Ed Page
8cc164dafb
fix!: Remove lifetime from PossibleValue
...
Another step towards #1041
This isn't the long term type for `PossibleValue::help`, I just wanted
to get the lifetime out of the way first before figuring out how help
will work.
2022-08-19 12:44:29 -05:00
Ed Page
429143af42
fix: Remove once_cell dependency from derive
...
With being able to accept owned types now, `clap_derive` no longer needs
`once_cell` to make dynamic data static.
This helps towards #1365 , #2037
2022-08-16 15:03:35 -05:00
Ed Page
2de59195aa
fix!: Prefer IntoIterator
over &[]
...
The main breakinge change cases:
- `&[char]`: now requires removing `&`
- All other non-ID `&[_]`: hopefully #1041 will make these non-breaking
Fixes #2870
2022-08-15 13:26:17 -05:00
Ed Page
43e961d24f
style: Address clippy
2022-08-11 16:07:58 -05:00
Ed Page
3390adf0d3
chore: Bump MSRV to 1.60.0
...
While at it, this cleans up all of the features. For some reason, I
couldn't do `dep:clap_derive` though.
2022-08-10 21:32:06 -05:00
Daniel Parks
1a2ae76738
fix(derive): Add "id" attribute
...
Previously the Arg id was set with the "name" attribute. This allows use
of an "id" attribute to match the underlying struct.
A side effect of this is that the "id" attribute may also be used on
Commands. This isn't desired, but given the current architecture of the
attribute parser, it's hard to avoid.
Fixes : #3785
2022-08-09 12:15:02 -07:00
Ed Page
ba15b5f430
fix!: Rename Arg::number_of_values to Arg::num_args
2022-08-03 14:45:47 -05:00
Ed Page
470531b515
fix!: Replace multiple_values
with number_of_values
...
This reduces ambiguity in how the different "multiple" parts of the API
interact and lowrs the amount of API surface area users have to dig
through to use clap.
For now, this is only a matter of cleaning up the public API. Cleaning
up the implementation is the next step.
2022-08-01 15:50:23 -05:00
Ed Page
8f6231010a
Merge pull request #4015 from epage/arg_enum
...
fix!: Remove rest of deprecated APIs
2022-08-01 15:34:41 -05:00
Ed Page
76bff6f34e
fix!: Remove rest of deprecated APIs
...
Fixes #4009
2022-08-01 15:21:33 -05:00
dependabot[bot]
44350b376e
chore(deps): bump proc-macro2 from 1.0.40 to 1.0.42
...
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2 ) from 1.0.40 to 1.0.42.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.40...1.0.42 )
---
updated-dependencies:
- dependency-name: proc-macro2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 07:04:51 +00:00
Ed Page
cf8e1fc319
fix(derive): Make Option<Option<T>>
work per occurrence
2022-07-28 16:52:30 -05:00
Ed Page
4f756c483f
fix(derive): Make consistent with arg!
...
This has the downside of a regression in `--help`. We expect to fix
that soon-ish.
2022-07-28 16:52:06 -05:00
Ed Page
5f20fe1930
docs: Shift focus from takes_value to actions
2022-07-26 14:50:51 -05:00
Ed Page
55f2bb6979
Merge pull request #3991 from epage/warn
...
chore: Fix warnings
2022-07-25 14:58:54 -05:00
Ed Page
095d7db33e
chore: Fix warnings
2022-07-25 14:35:23 -05:00
Ed Page
8ea1e2d4d3
fix!: Use value parsers for external subcommands
...
This changes the default type as well to encourage preserving the full
information for shelling out. If people need UTF-8, then they can
change the value parser.
Fixes #3733
2022-07-25 14:31:56 -05:00
Emerson Ford
04e0ed7474
feat(clap_derive): Add default_values_t
and default_values_os_t
2022-07-25 10:14:04 -07:00
Ed Page
8aa7ab3e16
chore: Update version
...
The main goal is to reduce the risk of people developing on the wrong
release, assuming they are using something like starship to raise the
visibility of the crate version.
2022-07-23 21:43:37 -05:00
Ed Page
6ecb7310a8
fix(derive)!: Remove value_parser/action defaulted attributes
2022-07-22 20:07:47 -05:00
Ed Page
8b064cfee9
fix(derive): Move off of SubcommandRequiredElseHelp
...
This also let us remove the deprecated attribute
Fixes #3280
2022-07-22 12:33:31 -05:00
Ed Page
50019cacdc
Merge pull request #3967 from epage/parse
...
fix(derive)!: Remove deprecated parse attribute
2022-07-22 12:27:43 -05:00
Ed Page
7068586246
fix(derive)!: Remove deprecated parse
attribute
2022-07-22 12:14:29 -05:00
Ed Page
0d459128d7
fix(error)!: Merge UnrecognizedSubcommand into InvalidSubcommand
...
Fixes #3676
2022-07-22 12:12:35 -05:00
Ed Page
7307f22c73
fix(derive): Remove error check for old raw attributes
2022-07-22 11:41:00 -05:00
Ed Page
01a3ea425f
fix!: Remove unstable-v4
feature gate
2022-07-22 11:34:06 -05:00
Ed Page
6428618bf2
fix(derive)!: Remove deprecated trait methods
2022-07-21 12:57:17 -05:00
Ed Page
b4a1362486
chore: Release
2022-06-28 08:04:18 -05:00
Ed Page
a05f4d34a3
Merge pull request #3870 from stepancheg/macro-refs
...
Put once_cell reexport into __macro_refs
2022-06-27 20:44:01 -05:00
Ed Page
5ba41d775c
docs(license): Update years/holders
...
Without copyright assignment, everyone owns their own copyright, so
tried to reflect that.
See #3875
2022-06-27 12:55:09 -05:00
Stiopa Koltsov
464ef3920b
refactor: Put once_cell reexport into __macro_refs
...
When upgrading our company projects from clap 3.1 to clap 3.2 I had
to fix several references to `clap::lazy_init`. People are not
supposed to do that, but that's hard to enforce.
Hope placing `once_cell` reexport into `__macro_refs` prevent at
least some of the such issues in the future.
2022-06-26 04:13:03 +01:00
Ed Page
3823df9bbe
chore: Release
2022-06-21 09:32:04 -05:00
Ed Page
ae78f88d48
Merge pull request #3852 from epage/msrv
...
chore: Bump MSRV from 1.56.0 to 1.56.1
2022-06-17 09:23:06 -05:00
Ed Page
82d70d82c4
chore: Bump MSRV from 1.56.0 to 1.56.1
...
Being a patch release, I'm fine doing this outside of a minor release.
This avoids us having to deal with indexmap having a higher MSRV.
2022-06-17 09:01:45 -05:00
Tshepang Mbambo
806f634bfa
chore: trim Cargo manifest fields whose values are defaults
...
See...
- https://doc.rust-lang.org/cargo/reference/manifest.html?#the-documentation-field
- https://doc.rust-lang.org/cargo/reference/manifest.html?#the-readme-field
2022-06-17 15:49:04 +02:00
Ed Page
a7698e9a1d
chore: Release
2022-06-15 11:50:16 -05:00
omjadas
b1be436eda
fix: Fix compile error caused by default_value_os_t
2022-06-15 13:46:40 +10:00
Ed Page
20358ff295
chore: Release
2022-06-14 15:01:42 -05:00
Ed Page
5881bd02ca
fix(derive): Provide derive-friendly deprecation messages
...
This is a step towards #3822 . I'd say this fixes it but I'd want some
user acceptance before doing so.
2022-06-14 14:29:29 -05:00
Ed Page
11fe3ce404
fix(derive): Allow opting in to the original deprecations
2022-06-14 14:26:34 -05:00
Ed Page
ae81b09359
refactor(derive): Split up chained calls
2022-06-14 12:37:21 -05:00
Ed Page
ce5cc92820
refactor(derive): Clarify the kinds of methods
2022-06-14 12:35:19 -05:00
Ed Page
89beb28e73
fix(derive): Reduce amount of deprecation noise
...
The main thing that might slip through is `bool`. We'll see if we an
re-introduce that.
2022-06-14 12:24:57 -05:00
Ed Page
63a17a40ad
chore: Release
2022-06-14 11:19:59 -05:00
Ed Page
cb42df61e4
refactor: Switch to once_cell
...
Though this is changing an API item we export, we do not consider this a
breaking change because
- This was an implementation detail of the macros and people shouldn't be using it directly
- The `macro_rules` macro is coupled to `clap` because they are in the
same crate
- The derive macro is coupled to `clap` because `clap` declares a
`=x.y.z` dependency on `clap_derive
Fixes #3828
2022-06-14 09:10:50 -05:00
Ed Page
7836beda05
chore: Release
2022-06-14 07:02:40 -05:00
Ed Page
0a529c14cc
fix(derive): Switch default actions/parsers for unstable-v4
2022-06-13 18:59:58 -05:00
Ed Page
9910b1477b
fix(derive): Find a better target for validator deprecation warnings
...
Putting it on the doc comment is weird. We are now putting it on the
field which is a slight improvement. This better conveys "this is
auto-generated".
No test was added because the use case that I know of for exposing this
is short lived.
2022-06-13 16:14:05 -05:00
Ed Page
0096a4e881
fix(derive): Set the span for code generation
2022-06-13 15:19:23 -05:00
Ed Page
9757e38d05
refactor(derive): Be consistent in ValueEnum term
2022-06-13 12:52:31 -05:00
Ed Page
650a29c18b
chore: Release
2022-06-13 09:37:47 -05:00
Ed Page
4e56acffce
chore: Release
2022-06-13 09:31:29 -05:00
Ed Page
9caec5a52d
fix(parser): Deprecate ArgMatches::is_present
2022-06-10 14:21:25 -05:00
Ed Page
9e38353442
fix(derive): Clarify ArgEnum as ValueEnum
...
We aren't enumerating arguments but values for an argument, so the name
should reflect that.
This will be important as part of #1807 when we have more specific
attribute names.
2022-06-08 11:14:09 -05:00
Ed Page
19d8ca807f
fix(derive): Transition off of multiple_occurrences
...
For programs opting into the clap v4 behavior (with `action` or
`value_parser` attributes), we'll no longer generate a
`multiple_occurrences(true)` call in preparation for deprecating
`multiple_occurrences`. See #3772 .
2022-06-07 15:38:14 -05:00
Ed Page
efc1520223
perf(derive): Cache positional status
2022-06-07 15:05:11 -05:00
Ed Page
647896d929
feat(derive): Expose control over Actions
...
This is the derive support for #3774 (see also #3775 , #3777 )
This combined with `value_parser` replaces `parser`. The main
frustration with this is that `ArgAction::Count` (the replacement for
`parse(from_occurrences)` must be a `u64`. We could come up with a
magic attribute that is meant to be the value parser's parsed type. We
could then use `TryFrom` to convert the parsed type to the user's type
to allow more. That is an exercise for the future. Alternatively, we
have #3792 .
Prep for this included
- #3782
- #3783
- #3786
- #3789
- #3793
2022-06-06 11:35:07 -05:00
Ed Page
552e6feb3f
fix(derive): Adjust precedence for flag/occurrence logic
2022-06-02 16:56:12 -05:00
Ed Page
f4004b653b
refactor(derive): Give new-style highest precedence
...
This exposed a potential bug but I figure it isn't worth fixing without
actions.
2022-06-02 16:46:50 -05:00
Ed Page
ebf9c16a23
refactor(derive): Clarify functions role
2022-06-02 16:46:50 -05:00
Ed Page
cccc88bcc2
fix(derive): Fix typo in error messages
2022-06-02 16:46:50 -05:00
Ed Page
e5f2911603
fix(derive): Reference correct path
2022-06-02 16:46:50 -05:00
Ed Page
773ba94c4e
refactor(derive): Merge handling of bool/from_flag
...
This will make it easier to divide off parser logic for adding in
actions.
This does mean we can't provide error reporting on bad values with
`bool` but
- We should have also been doing that for `from_flag`
- We'll be dropping this soon in clap4 anyways
2022-06-02 13:01:59 -05:00
Ed Page
e5ead4ce49
refactor(derive): Default parser based on type
2022-06-02 11:50:45 -05:00
Ed Page
f61aad4b34
refactor(derive): Resolve value parsers earlier
2022-06-02 11:14:25 -05:00
Ed Page
96ac83e260
refactor(derive): Simplify needs for finding the inner type
2022-06-02 11:07:43 -05:00