Commit graph

6756 commits

Author SHA1 Message Date
Ed Page
e53447835c docs: Fix link to crate_authors macro 2022-09-30 13:15:58 -05:00
Ed Page
6328c14c0c
Merge pull request #4307 from epage/assert
feat(assert): Help people know about implicit ArgGroups
2022-09-30 13:09:13 -05:00
Ed Page
e9c7ee4f5f docs: Add missing short help entry to changelog 2022-09-30 13:08:10 -05:00
Ed Page
1065d6c36b feat(assert): Help people know about implicit ArgGroups 2022-09-30 12:56:43 -05:00
Ed Page
59562f0b97
Merge pull request #4305 from epage/id
feat(derive): Report the group id
2022-09-30 12:43:57 -05:00
Ed Page
c16fdbedc1 docs: Clarify term_width requires wrap_help 2022-09-30 12:30:14 -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
1877e31c21
Merge pull request #4303 from epage/group
feat(derive): Implicitly populate groups from some structs
2022-09-30 12:17:18 -05:00
Ed Page
8f8558a32d
Merge pull request #4302 from epage/group4
fix(error): Improve errors when groups are involved
2022-09-30 11:42:50 -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
5017f0d720 fxi(error): Don't report unrelated groups in requries errors 2022-09-30 11:18:47 -05:00
Ed Page
e1b02a11cc test: Demonstrate bad requires error 2022-09-30 11:02:44 -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
76b7579341 test: Demonstrate bad group error 2022-09-30 10:00:24 -05:00
Ed Page
993b0a88d7 test: Expand group test 2022-09-30 09:53:09 -05:00
Ed Page
470140f41e chore: Release 2022-09-30 09:31:51 -05:00
Ed Page
2780a875f0 docs: Update changelog 2022-09-30 09:31:38 -05:00
Ed Page
9ed78ae793
Merge pull request #4301 from epage/group4
feat(derive): Allow skipping the implicit ArgGroup
2022-09-30 09:30:45 -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
35eeba0b63 test(derive): Show failure in #4279 2022-09-30 09:05:48 -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
72469e7e54
Merge pull request #4298 from shellcodesniper/patch-1
doc(fix typo): no close bracket in example
2022-09-30 08:23:37 -05:00
Ed Page
2912a6436f chore: Release 2022-09-30 08:16:12 -05:00
Ed Page
b814c785ef docs(derive): Correct reference 2022-09-30 08:15:48 -05:00
KuuWang
71be5463e5
doc(fix typo): no close bracket in example
Tutorials (derive, builder > Tutorials (derive, builder)
2022-09-30 17:43:23 +09:00
Ed Page
5885cc7f0c
Merge pull request #4294 from epage/req
feat: Add ArgGroup::is_required_set
2022-09-29 16:49:13 -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
eeafb2574b docs(complete): Don't use deprecated API 2022-09-29 16:11:03 -05:00
Ed Page
1e2b791049
Merge pull request #4292 from epage/func
refactor: Use getters internally
2022-09-29 15:50:51 -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
668c021419 chore: Release 2022-09-29 13:09:30 -05:00
Ed Page
9069755919 docs: Update changelog 2022-09-29 13:09:14 -05:00
Ed Page
d24e723bb4
Merge pull request #4255 from anshulrgoyal/master
[clap_mangen]fix: use proper sub-command name in manpages
2022-09-29 13:07:18 -05:00
Anshul Goyal
47790e62bf chore: Remove .vscode folder 2022-09-29 23:15:05 +05:30
Anshul Goyal
cdcf9aad34 fix: Add test for subcommand 2022-09-29 23:07:28 +05:30
Ed Page
80fb67edaa chore: Release 2022-09-29 12:08:47 -05:00
Ed Page
83db04c0c3 docs: Update changelog 2022-09-29 12:08:40 -05:00
Ed Page
cdaa8a18a5
Merge pull request #4289 from martinvonz/generate-subcommand-alias
Generate subcommand alias
2022-09-29 12:07:25 -05:00
Martin von Zweigbergk
33fa7c4c19 fix(complete): Fix command alias and Bash
With the previous fixes for #4273 and #4280 in place, it's now easy to
add support for subcommand aliases, which this commit does. This
addresses #4265 for Bash.
2022-09-29 08:58:32 -07:00
Martin von Zweigbergk
9ee45f7f3d fix(complete): Fix git diff log <TAB> for Bash
This continues the work started with the fix for #4273. There was
another bug caused by using the subcommand names without considering
their position in the argument list. If the user enters `git diff log
<TAB>`, we build up a string that identifies the subcommand. We ended
up making the string `git__diff__log` in this case because we appended
`__log` without considering the current state. Since `git__diff__log`
does not correspond to an actual command, we wouldn't provide any
suggestions.

This commit restructures the code so we walk subcommands and
subsubcommands in `bash.rs`. While walking those, we build up a list
containing triples of the parent `$cmd` name (e.g. `git__diff`), the
current command's name (e.g. `log`), and the `$cmd` for the current
command. We then build the shell script's case arms based on that
information.

We could instead have fixed #4280 by using the second element in the
pair returned from `utils::all_subcommands()` (a stringified list of
the subcommand path) instead of the first one. However, that would not
have helped us solve #4265.

Closes #4280
2022-09-29 08:58:32 -07:00
Martin von Zweigbergk
ea264fde16 fix(complete): Fix git diff git <TAB> for Bash
Early in the Bash-completion script, we build up a string that
identifies the command or subcommand. When we see the top-level
command's name (e.g. `git`) we set the command so far to that
value. We do that regardless of where in the argument list it
appears. For example, if the argument list is `git diff git`, we set
the current command to `git` when run into it the second time. We
therefore suggest arguments to the top-level command afterwards, which
is not correct.

This patch fixes that by also considering the string that identifies
the command so far, so we only set the overall command to `git` if the
command so far is the empty string.

This is actually just a step on the way to getting completion to work
for aliases of subcommands.

Closes #4273
2022-09-29 08:40:54 -07:00
Martin von Zweigbergk
35b5f9b276 refactor(complete): Remove an always-true check
The `text` variable here is clearly never empty, so don't check if it
is.
2022-09-29 08:40:54 -07:00
Martin von Zweigbergk
9c59c69bb0 refactor(complete): Remove unnecessary early return
There seems to be little reason to return early with an empty list
when there are no subcommands, instead of going through the loop 0
times and then returning the empty list.
2022-09-29 08:40:54 -07:00
Martin von Zweigbergk
8d0ef124e0 test(complete): Include a visible command alias
Only zsh includes completion for visible aliases of subcommands. Let's
show that in tests.
2022-09-29 08:40:54 -07:00
Martin von Zweigbergk
5020d739d5 refactor(complete): Add an alias for the subcommand
I want to add support for completion of arguments for aliased
subcommands so it's nice to have an example to test on.
2022-09-29 08:39:49 -07:00
Martin von Zweigbergk
6bc8d2632c refactor(complete): Add a subcommand to examples
It's useful when testing to have a subcommand in the examples.
2022-09-29 08:39:17 -07:00
Martin von Zweigbergk
8b33da3138 fix(complete): Make the two examples consistent
The derive-based example has a `///` comment on one argument, which
ends up as a description for the argument in the generated completion
scripts. Let's switch to `//` so the two scripts produce the same
output (except for the binary name), so they're easy to compare.
2022-09-29 08:37:03 -07:00
Martin von Zweigbergk
59270b1c81 fix(complete): Make example commands match binary
The example binaries were renamed in 89c2b3bb0d, but the commands in
them were not, making the generated completion scripts not work
(because we use the command name as binary name in the examples).
2022-09-29 08:34:19 -07:00
Ed Page
9f30493e5f chore: Release 2022-09-29 10:08:12 -05:00