Ed Page
d56d8dd59e
chore: Make it easy to reproduce CI docs run
2022-06-04 12:58:53 -05:00
Ed Page
844dbae96b
Merge pull request #3787 from epage/bench
...
refactor(bench): Pull out benchmarks into own crate
2022-06-03 14:09:20 -05:00
Ed Page
34368419c2
refactor(bench): Pull out benchmarks into own crate
...
This is mostly about avoiding criterion's build times when just
developing clap itself.
I'm assuming the derive test changed because criterion's clap v2 isn't
in the dependency tree anymore.
2022-06-03 13:51:26 -05:00
Ed Page
8dd7d64977
Merge pull request #3786 from epage/default
...
fix(parser): Provide default value for Actions
2022-06-03 10:24:50 -05:00
Ed Page
e4b443d8bb
fix(parser): Provide default value for Actions
...
Actions were inspired by Python and Python does not implicitly default
any field when an action is given. From a Builder API perspective, this
seemed fine because we tend to focus the Builder API on giving the user
all information so they can make their own decisions. When working on
the Derive API, this became a problem because users were going to have
to migrate from an implied default to an explicit default when a common
default is good enough most of the time. This shouldn't interfere with
Builder users getting more details when needed.
This also highlighted two problems
- We set the index for defaults
- We don't debug_assert when applying conditional requirements with a
default present
2022-06-03 10:02:35 -05:00
Ed Page
e8ad62b784
Merge pull request #3783 from epage/refactor
...
refactor(derive): Prepare for action support
2022-06-03 09:56:56 -05:00
Ed Page
5db611384e
test(derive): Ensure we don't break compatibility
2022-06-02 16:56:14 -05:00
Ed Page
002d4421e5
Revert "fix(parser): Don't treat missing values as missing args"
...
This reverts commit 50f4018dcf
.
This broke compatibility with the derive when dealing with
`Option<Option<T>>` and related cases.
2022-06-02 16:56:14 -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
77a0e66f6e
Merge pull request #3782 from epage/parser
...
refactor(derive): Merge handling of bool/from_flag
2022-06-02 14:47:53 -05:00
Ed Page
58cf0ee446
Merge pull request #3781 from epage/get_one
...
fix(parser): Don't treat missing values as missing args
2022-06-02 14:04:56 -05:00
Ed Page
50f4018dcf
fix(parser): Don't treat missing values as missing args
2022-06-02 13:45:18 -05:00
Ed Page
cc2714beab
fix(parser): Don't allow error equality
...
This could cause surprising results for users as we add fields
2022-06-02 13:36:05 -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
dfc55cd6e3
test(derive): Update ui test to be correct otherwise
2022-06-02 11:59:09 -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
Ed Page
758f3fff18
Merge pull request #3779 from epage/docs
...
docs(builder): Note the type for 'Count'
2022-06-01 16:59:58 -05:00
Ed Page
ab08a3069a
docs(builder): Note the type for 'Count'
2022-06-01 16:23:19 -05:00
Ed Page
ec9d180e11
Merge pull request #3778 from epage/unify
...
fix(derive): Align value parser's type with occurrences_of
2022-06-01 12:16:19 -05:00
Ed Page
bbab148289
fix(derive): Align value parser's type with occurrences_of
2022-06-01 11:21:34 -05:00
Ed Page
b417e62ccd
Merge pull request #3777 from epage/set
...
feat(builder): Set/Append Actions
2022-06-01 11:09:05 -05:00
Ed Page
95c812b411
feat(builder): Set/Append Actions
...
This round out the new style actions and allow us to start deprecating
occurrences.
As part of an effort to unify code paths, this does change flag parsing
to do splits. This will only be a problem if the user enables splits
but we'll at least not crash. Once we also address #3776 , we'll be able
to have envs all work the same.
2022-06-01 10:12:44 -05:00
Ed Page
70767524c0
Merge pull request #3775 from epage/new
...
feat(parser): SetTrue/SetFalse/Count Actions
2022-06-01 07:07:27 -05:00
Ed Page
c58a802a1d
style: Make clippy happy
2022-06-01 06:45:23 -05:00
Ed Page
20ed49a535
Merge pull request #3774 from epage/action
...
feat(builder): Expose ArgAction
2022-05-31 21:25:19 -05:00
Ed Page
2e9e556359
test(parser): Ensure conditional requirements work with new Actions
2022-05-31 21:21:50 -05:00
Ed Page
4afd1aafe5
fix(parser): Don't double-increment index on flags
2022-05-31 21:21:50 -05:00
Ed Page
06ea572770
fix(parser): Apply conditional defaults
...
Now that we can store constants for flags, we can apply defaults for
flags too.
Fixes #3294
2022-05-31 21:21:50 -05:00
Ed Page
67f47c5618
feat(parser): SetTrue/SetFalse/Count Actions
...
This is the minimum set of actions for the derive to move off of
`parse`. These are inspired by Python's native actions.
These new actions have a "unified" behavior with defaults/envs. This
mostly means that occurrences aren't tracked. Occurrences were used as
a substitute for `ValueSource` or for counting values. Both cases
shouldn't be needed anymore but we can re-evaluate this later if needed.
2022-05-31 21:21:48 -05:00
Ed Page
36680593be
refactor(parser): Clarify intent of push_arg_values
2022-05-31 20:46:22 -05:00
Ed Page
7163f8d3e8
refactor(parser): Clarify intent of split_arg_values
2022-05-31 20:46:22 -05:00
Ed Page
e53dd937be
feat(builder): Infer takes_vaue from action
2022-05-31 20:46:22 -05:00
Ed Page
91480de6d2
feat(builder): Expose ArgAction
2022-05-31 20:46:22 -05:00
Ed Page
b1b5820cb4
refactor(asserts): Ensure we always check positionals take values
2022-05-31 20:46:22 -05:00
Ed Page
2b95985161
refactor(parser): Ensure action and are are in-sync
2022-05-31 20:45:56 -05:00
Ed Page
7264bf28c7
refactor(parser): Clarify Action::Flag's behavior
2022-05-31 15:11:24 -05:00
Ed Page
eeca653697
refactor(parser): Loosen Action trait requirements
2022-05-31 15:10:07 -05:00
Ed Page
fb99d2c625
refactor(parser): Allow adding more actions in the future
2022-05-31 15:09:30 -05:00
Ed Page
66567d16a4
Merge pull request #3773 from epage/pending
...
refactor(parser): Extract Actions from Parser
2022-05-31 15:07:47 -05:00
Ed Page
8af7294a26
style: Make clippy happy
2022-05-31 14:50:56 -05:00
Ed Page
12d145c60d
style: Fix debug typoe
2022-05-31 14:44:36 -05:00
Ed Page
70b633b0ea
refactor(parser): Be explicit about not not iterating over every value
2022-05-31 14:44:36 -05:00
Ed Page
5a55f4a863
fix(parser): Restore positional occurrence behavior
...
This fixes a compatibility issue introduced in 9805fdad1b
2022-05-31 14:44:36 -05:00
Ed Page
c052a976b8
fix(parser): Qualify the type of action
...
My hope is to add group actions as well, so we need to qualify what kind
of action this is.
2022-05-31 14:22:24 -05:00