Ed Page
5ee9e0fe76
refactor(derive): Decouple doc comment parsing from methods
2022-11-07 08:06:10 -06:00
Ed Page
6ace0410c1
refactor(derive): Clarify leading-space removal
2022-11-07 07:49:44 -06:00
Ed Page
d1db3d2f0e
refactor(derive): Clarify empty doc needs
2022-11-07 07:48:16 -06:00
Ed Page
b4b94af0f8
chore: Release
2022-11-07 06:24:02 -06:00
Ed Page
79225d3a2d
fix(derive): Allow defaulted value parser for '()' fields
...
Inspired by #4458
This is a compatible change because it turns a compiler error into a
working case.
2022-11-07 06:07:51 -06:00
Ed Page
7e2a1b5d94
chore: Release
2022-10-20 16:58:59 -05:00
Ed Page
91daec67ca
fix(derive): Allow skipping enum variants with a value
...
Fixes #4411
2022-10-20 16:44:51 -05:00
Ed Page
e5a7a65153
chore: Release
2022-10-11 10:43:39 -05:00
Ed Page
b26c01aa0e
feat(derive): Allow type-less fields
...
When overriding other fields, help or version flag, globals, etc, a user
might not care about the value, so let's ignore the lookup.
Been talking about this for a while but Issue #4367 moved this forward
because there wasn't a good way to handle this without changing
behavior.
2022-10-11 10:31:42 -05:00
Ed Page
af1234a0c2
chore: Release
2022-10-05 16:51:33 -05:00
Ed Page
78676f5043
fix(derive): Make mismatched behavior more obvious
...
If the inner type never implemented `group_id()`, then it won't work and
people will be confused. This at least gives people an idea of whats
going wrong.
This is most likely to be a problem until #3165 is fully implemented but
hand-implementations can still run into this. Probably should have made
the groups another trait to catch this in type system but too late.
2022-10-05 16:25:14 -05:00
Ed Page
06d2049931
feat(derive): Support 'Option' when flattening
2022-10-05 16:21:00 -05:00
Ed Page
33db640dd5
refactor(derive): Make flatten's update prepped for Option
2022-10-05 16:12:12 -05:00
Ed Page
f121a8bdf6
fix(derive): Better subcommand type errors for Vec
2022-10-05 16:03:48 -05:00
Ed Page
4f17f998cb
fix(derive): Better flatten type errors
2022-10-05 15:59:45 -05:00
Ed Page
1d533bb31f
chore: Release
2022-10-03 16:20:14 -05:00
Ed Page
7ceb08ac70
fix(derive): Apply doc comments for #[command(subcommand)]
...
This was broken in 8a5a9ba931
. I had
missed this case for parsing doc comments.
2022-10-03 16:04:38 -05:00
Ed Page
261fb792a4
chore: Release
2022-10-01 13:54:19 -05:00
Ed Page
05bf0504f0
chore: Remove outdated replacement
2022-10-01 13:54:08 -05:00
Ed Page
03085e9dd1
docs(derive) Fix README links
...
Fixes #4314
2022-09-30 19:56:05 -05:00
Ed Page
0bea4f252b
chore: Release
2022-09-30 14:08:59 -05:00
Ed Page
5f145a23e9
fix(derive): Support 'group' attribute with Parser
2022-09-30 13:44:10 -05:00
Ed Page
42122787d7
feat(derive): Report the group id
...
This will be needed when we support flattening for #3165
2022-09-30 12:24:21 -05:00
Ed Page
50ad905b6a
feat(derive): Implicitly populate groups from some structs
...
This implements the basics for #3165 , just missing
- `flatten` support (waiting on improved group support)
- `group` attributes
2022-09-30 11:42:06 -05:00
Ed Page
470140f41e
chore: Release
2022-09-30 09:31:51 -05:00
Ed Page
2498147138
feat(derive): Allow skipping the implicit ArgGroup
...
This was prioritized to allow users to workaround problems when the
implicit `ArgGroup` is getting in the way.
Fixes #4279
2022-09-30 09:15:38 -05:00
Ed Page
6ca0569baa
fix(derive): Pipe group attribute through
...
Still doesn't support any attributes within it yet.
2022-09-30 08:56:35 -05:00
Ed Page
f6602c573c
chore: Release
2022-09-28 14:51:22 -05:00
Ed Page
24be631f86
fix(derive): Ensure clap/structopt attributes still work
...
The problem with updating all code to use non-deprecated APIs, there
aren't tests for the old way anymore.
Fixes #4274
2022-09-28 14:29:39 -05:00
Ed Page
79ba02daa5
fix(derive): Quote the attribute in the error
2022-09-28 14:27:08 -05:00
Ed Page
3a74d82376
chore: Release
2022-09-28 12:00:48 -05:00
Ed Page
a82029c707
chore: Release
2022-09-20 16:30:29 -05:00
Ed Page
fe43f0c945
Revert "fix: Remove once_cell dependency from derive"
...
This reverts commit 429143af42
.
2022-09-16 16:19:03 -05:00
Ed Page
7ccaebb65d
refactor(parser): Switch from Box<str>
to String
...
This is a more familiar type for people and it didn't cost us anything
(in fact it undid the code size change in the last commit).
2022-09-16 16:14:32 -05:00
Ed Page
1e13109a26
refactor(parser): Track subcommands with Box<str>
...
The overall hope is to allow a `&'static str`-only version of clap, so
we need to move off of `Str` where dynamic strings are required. We
need it here for subcommands due to external subcommands.
This had minimal impact on code size (567.2 to 567.5 KiB)
2022-09-16 16:14:32 -05:00
Ed Page
14c6ce0e83
fix(derive): Remove next_help_heading isolation
...
Originally, I saw the ideal as the parent command being isolated from
`#[clap(flatte)]` especially after all of the doc comment
leakage issues. We scaled that back to just `next_help_heading` because
of the issues with settling on a policy and maintenance to cover
everything. When doing `next_display_order`, we decided it would mess
things up too much to isolate it.
With #1807 , we instead have been moving towards setting
`#[command(next_help_heading)]` anywhere, we just need to finish working
out how it should work.
2022-09-16 15:31:49 -05:00
Ed Page
417f1a9813
fix(derive): Read CARGO_PKG_NAME at runtime
...
This was broken in #4168
2022-09-16 14:31:58 -05:00
Ed Page
d3bf5450ff
feat(derive): Reserve the T group name
...
Since the `name` is changed to be the package name, we can't use it as
(1) its not as predictable and (2) it can lead to conflicts if a
`Parser` is flattened into a `Parser`
2022-09-13 07:44:36 -05:00
Ed Page
3bfa9d5ff0
feat(derive): Reserve 'group' attribute
2022-09-13 07:06:06 -05:00
Ed Page
17f49df4e2
revert(derive): Bald action/value_parser are deprecated, its good enough
...
When I removed these in v5, we didn't have a deprecation approach for
the derive and I didn't want to forget. Now we do have a deprecation
approach and that is the reminder, so we don't need to carry around v5
changes.
2022-09-07 19:34:50 -05:00
Ed Page
ede8fd6dbd
style(derive): Clean up to make explicit methods easier
2022-09-06 12:54:50 -05:00
Ed Page
9c85839705
refactor(derive): Simplify processing of Subcommand
2022-09-06 12:54:50 -05:00
Ed Page
51dc3c63d6
refactor(derive): Treat subcommands like other Kinds
2022-09-06 12:54:50 -05:00
Ed Page
222003abe1
fix(derive): Disallow general attributes with from_global
2022-09-06 12:54:50 -05:00
Ed Page
a71b2eb8b8
refactor(derive): Shift responsibility for long help
2022-09-06 12:54:47 -05:00
Ed Page
abcee38466
fix(derive): Improve skip
method error
...
Really this is about consolidating the skip checks but it also provideda
chance to improve the error.
2022-09-06 10:48:54 -05:00
Ed Page
8a5a9ba931
perf(derive): Only parse doc comments when needed for field/variant
2022-09-06 10:43:16 -05:00
Ed Page
9eb72ea5b6
fix(derive): Disallow attributes on top-level ValuEnum
2022-09-06 10:40:12 -05:00
Ed Page
1d973bd1c1
perf(derive): Don't parse ValueEnum's doc comment to ignore it
2022-09-06 10:36:22 -05:00
Ed Page
eece51fe04
refactor(derive): Give more control to the derive
2022-09-06 10:35:19 -05:00
Ed Page
71b9209a34
refactor(derive): Simplify Kind initialization
2022-09-06 07:56:08 -05:00
Ed Page
ade931be57
fix(derive): Be less prescriptive
...
With how flexible clap's API is, it can be hard to determine what is
reasonable to use with its API, so let's just stop.
2022-09-06 07:56:08 -05:00
Ed Page
b29f3ff22f
refactor(derive): Delay error handling
2022-09-06 07:56:08 -05:00
Ed Page
f9e1ba2c1e
fix(derive): Improve the default span
2022-09-06 07:56:07 -05:00
Ed Page
6648cf6009
refactor(derive): Remove unused Type for values
...
They have no type
2022-09-06 07:55:23 -05:00
Ed Page
f571821670
refactor(derive): Decouple attr and kind processing
2022-09-03 20:58:26 -05:00
Ed Page
9abcae2ac3
refactor(derive): Separate parsing from pushing of attrs
2022-09-03 20:56:33 -05:00
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