Ed Page
4a34b9dd43
perf(parser): Reduce lookups for conflicts
...
We already need to lookup every present-arg for conflicts, so we might
as well cache it ahead of time. This let's us move some operations to
be immutable so we can more easily cache other lookups.
For me, this gave a 70% speed improvement for #4516 with mixed results
on normal benchmarks
2022-12-22 12:16:37 -06:00
Ed Page
9242e1dd00
Merge pull request #4566 from hitenkoku/fix/4565
...
removed {bin} variable from help_template
2022-12-22 10:33:22 -06:00
DastInDark
b72ad5892c
fix: Added cfg in help_template
2022-12-22 01:38:49 +09:00
DastInDark
c6058dee6e
fix(help_template): Added cfg
2022-12-22 01:13:20 +09:00
DastInDark
a7a8241487
docs(command): Added deprecated suffix in help string
2022-12-22 01:13:20 +09:00
DastInDark
a42204243a
fix(help_template): Remove {bin} variable
2022-12-22 01:13:02 +09:00
Thayne McCombs
6abc2cfc3b
feat: Add get/remove API for getting grouped values
...
Change it to be more consistent with get_one and get_many and related
functions.
Relates-To: #2924
2022-12-20 22:50:03 -07:00
Ed Page
453ac0bfb9
fix(parser): Be less confusing with args/subcommand conflicts
...
The new error message still isn't great but its better than the old one.
Reported at https://hachyderm.io/@eminence/109548978776785113
2022-12-20 20:27:58 -06:00
Ed Page
a72f962d35
docs(builder): Escape non-tags
2022-12-20 07:55:04 -06:00
Ed Page
ac48e2d5e4
docs: Make less brittle for rust versions
2022-12-20 07:54:30 -06:00
Ed Page
aa5420469e
Merge pull request #4555 from epage/reset
...
docs: Clarify role of Resettable
2022-12-14 21:04:29 -06:00
Ed Page
16c499c7b3
docs: Clarify role of StyledStr
2022-12-14 19:29:01 -06:00
Ed Page
1f3d5a321f
docs: Clarify role of Resettable
...
Inspired by #4554
2022-12-14 19:21:08 -06:00
Dezhi Wu
577b7f24fa
docs: Fix a typo
2022-12-14 15:47:15 +08:00
Ed Page
bf39b8d280
docs(ref): Move flatten/subcommand to be under command attr
...
Fixes #4505
2022-11-28 09:49:15 -06:00
Noritada Kobayashi
e2501ef7c2
docs: Present environment variable alternatives to crate_name!
...
`crate_name!` macro uses a value of an environment variable
`CARGO_PKG_NAME`, but there are other similar variables
`CARGO_PKG_NAME` and `CARGO_CRATE_NAME`, that users should be aware of.
2022-11-27 23:43:59 +09:00
Ed Page
20e02eb34e
Merge pull request #4509 from epage/possible
...
feat: Improve ValueParser experience
2022-11-24 10:06:52 -06:00
Ed Page
fb1d960fe2
Merge pull request #4249 from jcgruenhage/replace-atty
...
chore: replace atty with is-terminal
2022-11-24 09:48:37 -06:00
Ed Page
94aca92e44
feat: Create ValueParser from Vec<PossibleValue>
...
This dynamically generated list of possible values. Inspired by #4504
2022-11-24 09:47:33 -06:00
Ed Page
3bccfced1a
docs: Clarify PossibleValue is likely not needed
...
Fixes #4504
2022-11-24 09:47:33 -06:00
Ed Page
19981a2455
docs: Clarify ColorChoice impls ValueEnum
2022-11-24 09:47:33 -06:00
Ed Page
8d92f3e7a8
feat: Add Display/FromStr to ColorChoice
...
This matches up with `clap_complete::Shell`. This makes it a bit more flexible.
2022-11-24 09:47:33 -06:00
Ed Page
ed683ef248
fix: Always expose ColorChoice
2022-11-24 09:47:33 -06:00
Jan Christian Grünhage
aaac3c4930
chore: Replace atty with is-terminal
2022-11-24 15:33:43 +01:00
Ed Page
623ccbc152
style: Make clippy happy
2022-11-24 08:05:21 -06:00
Alex Saveau
fd64c8ae93
Gate term_width and max_term_width APIs on wrap_help
2022-11-20 19:33:02 -08:00
Ed Page
44dd8ea4c5
fix: Correctly refer to unstable-v5
2022-11-17 10:09:45 -06:00
Ed Page
dd143eed47
fix: Make ArgPredicate non_exhaustive in v5
...
Didn't want to forget to do this
Inspired by #4487
2022-11-17 09:01:51 -06:00
Peter Grayson
d9c9c7bdd8
fix: ContextKind.as_str() spellings
...
Signed-off-by: Peter Grayson <pete@jpgrayson.net>
2022-11-16 11:14:54 -05:00
Ed Page
6b62c82fe2
feat(parser): Show available subcommands when one is missing
...
Similar to
- Listing all required arguments when one is missing
- Listing all possible values when no value is provided
This came up when discussing #3572
2022-11-15 10:18:24 -06:00
Ed Page
c939de8a25
fix: Don't panic on non-built arg rendering
...
For num_args, we'll just use the default
Fixes #4479
2022-11-14 12:13:18 -06:00
Ed Page
e9cbed34cd
fix(parser): Don't panic on invalid UTF-8 values
...
Fixes #4473
2022-11-11 12:26:04 -06:00
Ed Page
9376a57d40
fix(help): Clarify that 'help' command accepts multiple
...
Making this plural can go either way as
- Clarify it is plural
- This is all really to simulate actually doing subcommands and you only
do one at a time
For now, I lean towards clarifying it is plural
I also tweaked the message to be more consistent with how `--help` and
`-h` describe themselves.
Fixes #4342
2022-11-07 23:04:04 -06:00
Ed Page
dfe9e73880
fix(help): Update auto-next-line to use new padding
...
In clap v4, we changed the padding from 4 to 2 but we didn't update our
calculation for when to switch to next-line-help as it was a magic
number (we tried to catch all of these).
When updating the tests, we also missed that a test was being wrapped
too narrowly
This was found while discussing #3300
2022-11-07 10:36:51 -06:00
Ed Page
539577dfb2
refactor(help): Remove dead code
...
`longest` is always the same or longer than the `sc_str.display_width`
2022-11-07 10:27:17 -06:00
Ed Page
c37ab6c205
fix(derive): Allow 'long_help' to force populating from doc comment
...
Fixes #4441
2022-11-07 09:41:52 -06:00
Thayne McCombs
2ff3d43724
feat(derive): Implement ValueEnum for ColorChoice
2022-11-04 00:29:52 -06:00
Ed Page
e11afa284b
Merge pull request #4401 from epage/last
...
fix(complete): Support last(true) with CommandWithArguments
2022-10-18 07:41:02 -05:00
Ed Page
1ead5ef421
fix(complete): Support last(true) with CommandWithArguments
...
Fixes #4400
2022-10-18 07:28:52 -05:00
Justin Browne
a1d4476f24
Fix a broken link in ValueEnum docs
2022-10-18 05:03:58 -04:00
Ed Page
45dcf0ed22
fix(parser): Don't make Args exclusive
with their ArgGroup
...
This is most obvious with the derive API as it creates `ArgGroup`s all
over the place now.
Fixes #4396
2022-10-17 19:02:39 -05:00
Ed Page
f1ffc63a79
fix(error): Be consistent with rustc diagnostic guidelines
...
From
https://rustc-dev-guide.rust-lang.org/diagnostics.html#suggestion-style-guide
> Suggestions should not be a question. In particular, language like
> "did you mean" should be avoided. Sometimes, it's unclear why a
> particular suggestion is being made. In these cases, it's better to be
> upfront about what the suggestion is.
>
> The message may contain further instruction such as "to do xyz, use"
> or "to do xyz, use abc".
Inspired by #2766
2022-10-13 14:01:49 -05:00
Ed Page
0f3c98a799
fix(error): Be consistent in puncutation
2022-10-13 13:56:58 -05:00
Ed Page
b9d298086c
refactor(error): Move subcommand suggestion to general suggestions
2022-10-13 13:17:44 -05:00
Ed Page
63eec40652
refactor(error): Clarify distinct suggestion cases
2022-10-13 13:15:11 -05:00
Ed Page
5275660967
refactor(error): Move escape suggestion to general suggestion
2022-10-13 13:10:15 -05:00
Ed Page
813060ea82
refactor(error): Move bad-escape suggestion to general suggestion
2022-10-13 13:03:14 -05:00
Ed Page
7417c75c57
refactor(error): Move escaped-subcmd suggestion to general suggestions
2022-10-13 12:59:13 -05:00
Ed Page
c8cb5bba38
feat(error): General suggestion mechanism
2022-10-13 12:20:04 -05:00
Ed Page
4ec79b1448
refactor(error): Centralize suggestions
2022-10-13 12:12:03 -05:00
Ed Page
a4bcba6840
fix(error): Consistently indent suggestions
2022-10-13 12:10:13 -05:00
Ed Page
47704314b1
refactor(error): Consolidate 'did you mean' code
2022-10-13 11:11:17 -05:00
Ed Page
a964f45b1b
fix(error): Properly quote, color subcommand suggestions
2022-10-13 10:51:17 -05:00
Ed Page
1039c61c53
fix(error): Be more consistent in error quoting
2022-10-13 10:45:38 -05:00
Ed Page
f8053fcedb
fix(error): Don't suggest '--' when it doesn't help
2022-10-13 10:17:11 -05:00
Ed Page
06e2388972
docs: Clarify default_values_ifs
tuple parameters
...
Fixes #4376
2022-10-12 14:11:40 -05:00
Ed Page
d0dcaac2ab
fix(parser): Only add ArgGroup to ArgMatches for command-line
...
This will fix `clap_derive`s behavior for optional-flattened groups as
it will properly detect when the group is present (#3566 ).
While I consider this a bug and not part of compatibility guarentees, I
still want to keep in mind user impact which could still prevent this.
Defaults will make the group always-present which has little value and
if anything is relying on this, it is probably an application bug.
2022-10-12 07:52:07 -05:00
Ed Page
e98fc7f6eb
refactor(parser): Centralize knowledge for explicit
2022-10-12 07:46:39 -05:00
Ed Page
e704adb4ff
refactor(parser): Centralize group handling
...
Since groups are only associated with the occurrence, we can move the
assigning of it to the occurrence start.
This will help centralize other checks
2022-10-12 07:37:41 -05:00
Ed Page
0f30ac76f1
refactor(parser): Remove function wrappers
2022-10-12 07:32:21 -05:00
Ed Page
8cf6d116e3
refactor(parser): Reduce code duplication
2022-10-12 07:31:09 -05:00
Ed Page
84828e8da9
refactor(parser): Remove function wrappers
2022-10-12 07:28:57 -05:00
Ed Page
43c1fa30d0
refactor(parser): Reduce code duplication
2022-10-12 07:26:30 -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
2122e2b2dd
feat(parser): Add TypedValueParser::try_map
...
This is a major building block to avoid needing to implement
`TypedValueParser`
Inspired by #4362
2022-10-10 10:54:12 -05:00
Ed Page
502bb93e5b
feat(error): Allow reproducing clap's errors
...
Fixes #4362
2022-10-10 10:25:36 -05:00
Ed Page
5b763e957c
docs: Fix value_parser documented From types
2022-10-10 09:00:24 -05:00
Ed Page
a482b8a87b
Merge pull request #4355 from LingMan/patch-1
...
docs: Fix formatting in docs of value_parser! macro
2022-10-08 20:33:24 -05:00
Ed Page
fd41141071
docs: Clarify args_override_self
...
Fixes #4357
2022-10-08 20:18:27 -05:00
Ed Page
59bf166183
docs(tutorial): Fix flag actions
...
Fixes #4359
2022-10-08 20:14:03 -05:00
Harald Gutmann
505f760df9
fix(clap): Early line wrap ascii control chars
...
counting ascii control sequences lead to unpredictable and early
line breaks on colorized inputs (e.g. syntax highlighted strings)
2022-10-08 19:55:52 +02:00
Harald Gutmann
95c638842a
fix(clap): Early line wrap ascii control chars
...
counting ascii control sequences lead to unpredictable and early
line breaks on colorized inputs (e.g. syntax highlighted strings)
2022-10-08 19:23:38 +02:00
LingMan
a867ddb6cd
docs: Fix formatting in docs of value_parser! macro
2022-10-08 01:08:38 +02:00
Dominik Nakamura
232d91b96e
docs: Describe the skip attribute for ValueEnums ( #4328 )
...
Documenting the `skip` attribute for the `ValueEnum` derive macro promptly, as it's not mentioned anywhere else.
Fixes #4327
2022-10-05 08:22:18 -05:00
Tony Gorez
7f98947c04
feat: expose is_multiple
& get_args
API for ArgGroup
( #4336 )
...
Fixes #4228
2022-10-03 15:21:53 -05:00
Ed Page
dd8e242773
fix(parser): Allow defaults for Help/Version
...
These didn't make sense for the builder but are helpful for the derive.
The assert was assuming people wouldn't do this and to catch internal
problems.
Fixes #4326
2022-10-01 13:37:24 -05:00
Ed Page
46e238febb
docs: Fix outdated short comment
...
Noticed as part of #4311
2022-09-30 14:49:38 -05:00
Ed Page
16e5599b71
docs: Note that author doesn't show up by default
2022-09-30 13:27:46 -05:00
Ed Page
4eb3da20f7
docs(help): Include example with old template
2022-09-30 13:21:13 -05:00
Ed Page
db31881be5
docs: Remove references to global settings
...
These were copied over from the original `AppSettings` and never updated
despite never being relevant in this context.
2022-09-30 13:17:46 -05:00
Ed Page
973f30fb22
refactor(docs): Use intra-doc links to avoid breakages
2022-09-30 13:16:13 -05:00
Ed Page
e53447835c
docs: Fix link to crate_authors macro
2022-09-30 13:15:58 -05:00
Ed Page
1065d6c36b
feat(assert): Help people know about implicit ArgGroups
2022-09-30 12:56:43 -05:00
Ed Page
c16fdbedc1
docs: Clarify term_width requires wrap_help
2022-09-30 12:30:14 -05:00
Ed Page
5017f0d720
fxi(error): Don't report unrelated groups in requries errors
2022-09-30 11:18:47 -05:00
Ed Page
cb04c71105
fix(error): Don't report unrelated groups in conflict errors
...
Ideally, a conflict caused by a group itself would show the relevant
group but that is less important than showing a valid, non-garbage,
usage
2022-09-30 10:38:27 -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
b814c785ef
docs(derive): Correct reference
2022-09-30 08:15:48 -05:00
Ed Page
8fc8b5f273
feat: Add ArgGroup::is_required_set
...
This is a part of #4228
I thought I needed this for another change but it turned out I didn't.
2022-09-29 16:29:08 -05:00
Ed Page
4634812e3d
refactor: Use getters internally
...
This originally stemmed from wrapping `Arg` in a `Box`, but we had to
smash it with a hammer as it didn't improve things enough.
- This dropped binary size by 3-7 KiB
- Parsing slowed by 20%.
- Incremental rebuilds slowed down by 1%
2022-09-29 15:26:24 -05:00
Ed Page
84055f41e4
docs: Provide more nuance on allow_hyphen_values
...
This matches what we hope is the right behavior, see #4283
2022-09-29 14:41:39 -05:00
Ed Page
4e9f3cca2c
fix(error): Specialize the self-conflicts error
...
Inspired by rust-lang/cargo#11159
2022-09-29 09:54:20 -05:00
Ed Page
5399f49572
fix(error): Quote literals consistently
2022-09-29 08:54:03 -05:00
Ed Page
2d86f96d64
fix(error): Stylize escape suggestions
2022-09-29 08:47:56 -05:00
Ed Page
549911a84a
fix(error): Format help suggestion as literal
2022-09-29 08:43:05 -05:00
Ed Page
3683e2c791
fix(parser): Allow one-off self-overrides
...
bat needed this.
See also #4261
2022-09-28 16:45:35 -05:00
Ed Page
2d7874948f
fix(parser): SetFalse should also not allow self-override
2022-09-28 16:26:36 -05:00
Wolf Thomsen
0f45ac7235
Fix inline code snippet typos
...
There are a couple of typos where a backtick is missing / too much which results in slightly broken formatting. This PR should hopefully fix them.
2022-09-28 21:26:56 +02:00
Ed Page
9cd1939535
Merge pull request #4269 from epage/usage
...
fix(error): Polish `--flag=bad-value` error
2022-09-27 09:42:11 -05:00
Ed Page
cb1cd67009
fix(error): Include failed arg in usage in --flag=bad-value error
2022-09-27 09:25:24 -05:00