Commit graph

180 commits

Author SHA1 Message Date
Ed Page
95698a4f31 chore: Release 2022-05-06 09:39:24 -05:00
Ed Page
3984e55363 docs(complete): Update changelog 2022-05-06 09:39:15 -05:00
Ed Page
b266e6d35d fix(complete): Complete visible, rather than hidden, values
In a refactor for #3503, one of the checks for `is_hide_set` got flipped
and we are completing hidden `PossibleValue`s rather than visible.

Fixes #3697
2022-05-06 09:14:32 -05:00
Ed Page
d3e36b1c90 fix(v4): Disallow leading dashes in long's
This is a step towards #3309.  We want to make longs and long aliases
more consistent in how they handle leading dashes.  There is more
flexibility offered in not stripping and it matches the v3 short
behavior of only taking the non-dash form.  This starts the process by
disallowing it completely so people will catch problems with it and
remove their existing leading dashes.  In a subsequent breaking release
we can remove the debug assert and allow triple-leading dashes.
2022-05-04 15:38:08 -05:00
Ed Page
0ecb6f4869 fix(builder): Fully recurse when building
Besides addressing the panic from assuming things were built when they
weren't, this should fix some completion issues for some people.

Fixes #3669
2022-04-30 20:02:06 -05:00
Ed Page
3ca1b77094 chore: Fix manifest 2022-04-30 06:37:57 -05:00
Ed Page
b01256be36 chore: Release 2022-04-30 06:36:33 -05:00
Ed Page
0c5400dadb chore: Release 2022-04-30 06:35:57 -05:00
Ed Page
09d21f4005 docs: Update changelog 2022-04-30 06:35:38 -05:00
Ed Page
1922b892ae fix(complete): Correctly detect positionals 2022-04-27 15:53:02 -05:00
Ed Page
53ae382c99 feat(complete): Add debug aids 2022-04-27 15:49:58 -05:00
Ed Page
4b9dd3fbbb test(complete): Cover long flags 2022-04-27 15:49:58 -05:00
Ed Page
c9b6d62ba7 test(complete): Cover subcommands 2022-04-27 15:49:58 -05:00
Ed Page
ca4439a93a fix(complete): Make short flags additive 2022-04-27 15:49:58 -05:00
Ed Page
f4892848da fix(complete): Allow subcommands in escaped arguments 2022-04-27 15:49:58 -05:00
Ed Page
6895806566 fix(complete: Use correct value name for IFS 2022-04-27 15:49:58 -05:00
Ed Page
2701f48023 fix(complete): Don't require IFS
This makes testing easier
2022-04-27 15:49:58 -05:00
Ed Page
fe70fbc733 fix(complete): Only use IFS between items 2022-04-27 15:49:58 -05:00
Ed Page
a574f226eb feat(complete): Look up partial matches 2022-04-27 15:49:58 -05:00
Ed Page
63e0fd5c50 fix(complete): Don't count flags as positionals 2022-04-27 15:49:58 -05:00
Ed Page
0112ad8b4f refactor(complete): Extract arg value completion 2022-04-27 15:49:58 -05:00
Ed Page
458b4ae9cc feat(complete): Escaped args are always positional 2022-04-27 15:49:58 -05:00
Ed Page
44443503cc feat(complete): Only list for current positional 2022-04-27 15:49:58 -05:00
Ed Page
2d70927be6 fix(complete): Detect which argument is being completed 2022-04-27 15:49:58 -05:00
Ed Page
018b8bd565 feat(complete): Complete possible values 2022-04-27 15:49:58 -05:00
Ed Page
5882e3df3b feat(complete): Basic subcommand support 2022-04-27 15:49:58 -05:00
Ed Page
9f9e410c6d feat(complete): Minimal rust-completion
Inspired by argcomplete, this provides Rust-implemented completions
- Only bash for now
- No subcommand support
- No flag value support
- No special settings support
- No handling of positions within positionals
- No prioritizing of required or removing of conflicts (including
  self-conflicts)
2022-04-27 15:49:58 -05:00
Ed Page
bbf6488ede fix(complete): Send debug statements to stderr 2022-04-27 15:49:58 -05:00
Ed Page
3d64ebacac test(complete): Option to verify examples 2022-04-27 09:03:47 -05:00
Ed Page
89c2b3bb0d docs(complete): Clarify examples 2022-04-27 08:55:12 -05:00
Ed Page
55bfacbf43 test(complete): Use official extensions for snapshots 2022-04-22 16:21:10 -05:00
Ed Page
0194568b03 chore: Release 2022-04-19 10:31:52 -05:00
Ed Page
8f182067e3 feat(clap): Publicly expose Command::build
`Command::_build_all` started as an internal function for
`clap_complete` as a stopgap until #2911.  Overtime, we've been finding
more cases where this function needs to be called, so now we're going to
fully embrace it until #2911 so people aren't scrared off by the hidden
implementation from using it.

This was inspired by #3602

Comptibility: Though this adds a deprecation which we general reserve
for minor or major versions, this is enough of a corner case that I'm
fine doing this in a patch release.
2022-04-19 10:13:43 -05:00
Federico Ciardi
5689adc875 fix(clap_complete_fig): Correct requiresEquals name and add it to the right objects 2022-03-18 14:46:20 +01:00
Federico Ciardi
abc72a7d0b feat(clap_complete_fig): Add exclusiveOn and isRepeatable 2022-03-17 21:47:18 +01:00
Federico Ciardi
f755198349
feat(clap_complete_fig): support hide and require_equals (#3560) 2022-03-17 20:35:52 +00:00
Ed Page
02fe7659c0 test(complete): Switch to snapshot testing
- This will make it easier to update
- We now uniformly test each shell
2022-03-07 14:03:49 -06:00
Ed Page
1e286f3dc2 chore: Release 2022-03-02 09:20:00 -06:00
Roland Fredenhagen
33949ce4de
feat(help): Show PossibleValue help in --help (#3503)
`-h` (short help) still shows the same.

This gates it behind an `unstable-v4` feature flag to avoid disrupting users who set the help without knowing where all it shows up (particularly derive users where `ArgEnum` is automatically extracting the help).

Fixes #3312
2022-03-02 09:15:28 -06:00
Ed Page
e6729f96c3 chore: Release 2022-02-16 11:59:45 -06:00
Ed Page
94c7775a30 docs: Update changelogs 2022-02-15 10:49:00 -06:00
Ed Page
ddac492302 fix: Rename IntoApp to CommandFactory
This is part of the `App` rename.

Previously, I was concerned about not being able to deprecate

For backwards compatibility, we still expose the `IntoApp` name.
2022-02-15 08:24:00 -06:00
Ed Page
c3fec1fa75 fix: Update derive->Command function name
No good solution for transitioning the trate name, unfortnately, since
we can't mark `use`s as deprecated (we can, it just does nothing).

I got rid of the `into` prefix because that implies a `self` parameter
that doesn't exist.
2022-02-14 16:04:10 -06:00
Ed Page
e8010e79a9 refactor: Update app variables to cmd 2022-02-14 15:55:56 -06:00
Ed Page
c4144d7d6c docs: Update App references to Command 2022-02-14 15:33:49 -06:00
Gibson Fahnestock
6f36ca3a25
fix(complete): escape fish possible values
Fixes: https://github.com/clap-rs/clap/issues/3467
2022-02-14 20:58:57 +00:00
Gibson Fahnestock
0fbabaa3fe
test(completion): add regression test for fish quoting issue 2022-02-14 20:55:06 +00:00
Ed Page
1e4ec5f4f0 fix: Deprecation warnings 2022-02-11 15:59:03 -06:00
Ed Page
d3f5d7ce34 fix: Clarify Arg/ArgGroup id's role
This adjusts names.  Adjusting the derive naming (and re-naming) is left
to #2475.

Fixes #3335
2022-02-11 14:11:50 -06:00
Ed Page
272f840178 feat: Replace core set of AppSettings with functions
This is a part of #2717

Some settings didn't get getters because
- They are transient parse settings (e.g. ignore errors)
- They get propagated to args and should be checked there

`is_allow_hyphen_values_set` is a curious case.  In some cases, we only
check the app and not an arg.  This seems suspicious.
2022-02-11 12:35:09 -06:00
Ed Page
9bd7060089 fix: Deprecate various APIs
- ArgSettings are part of #2717
- Errors are part of #2628
- `help_heading` is part of #1807 and #1553
- Some misc parts are for API consistency
2022-02-10 19:37:47 -06:00
Ed Page
47d76742eb feat: Add Arg getters for all settings
This is prep for #2717
2022-02-10 10:18:41 -06:00
Ed Page
5c3868ea4c chore: Release 2022-02-05 09:33:39 -06:00
Ed Page
28ea108374 docs: Update changelog 2022-02-05 09:33:12 -06:00
Haim Ashkenazi
c90a48bf0b More failing tests, hope this will end it :( 2022-02-05 17:16:40 +02:00
Haim Ashkenazi
3c2cea9754 Fixed failing test 2022-02-05 17:09:06 +02:00
Haim Ashkenazi
bf98b1bded Allow completion of partial commands
Based on solution suggested here by @benedictleejh:
    https://github.com/clap-rs/clap/issues/2750
2022-02-05 16:49:21 +02:00
Ed Page
e5b06c3061 chore: Release 2022-01-24 10:54:50 -06:00
Ed Page
ac43b7baee docs: Update changelog 2022-01-24 10:54:04 -06:00
Ed Page
afb2a3dd05 docs(complete): Clarify some panic conditions 2022-01-21 08:29:38 -06:00
Ed Page
b488aab46c fix: Clarify some unwraps as expects
This was inspiredby #3322
2022-01-21 08:27:18 -06:00
Ed Page
4a43b51a42 fix(complete): Handle help completions
The main motivation was to reduce special cases by putting all of the
logic in one place.
2022-01-17 09:23:04 -06:00
Ed Page
7b7c76e3d0 chore: Release 2022-01-15 18:51:41 -06:00
Ed Page
1c89abaa5b docs: Update changelog 2022-01-15 18:51:23 -06:00
Clifton King
658b7a0841 fix(complete): Fix unescaped single quotes in zsh
help strings for subcomand args did not escape single quotes
2022-01-15 14:33:11 -06:00
rndhouse
85cac43672
Fix broken CONTRIBUTING.md URL. 2022-01-13 15:14:08 +00:00
Ed Page
3d8ce3f426 chore: Release 2022-01-12 11:12:42 -06:00
Ed Page
0439dc221f docs: Update changelogs 2022-01-12 11:11:53 -06:00
Ed Page
37f47dd260 docs: Add completion changelogs 2022-01-12 11:04:57 -06:00
cherryblossom
6d27488602
fix(complete): Use Elvish v0.17 lambda syntax
[Elvish v0.17][1] deprecated the old lambda syntax (`[arg1 arg2] { body }`)
in favour of the new `{|arg1 arg2| body }` syntax. This commit uses the
new syntax to stop deprecation warnings.

[1]: https://elv.sh/blog/0.17.0-release-notes.html#deprecated-features
2022-01-12 11:58:18 +11:00
xylous
e2f4d2827e
fix(complete): Add newline at end of zsh output 2022-01-09 19:51:18 +02:00
Ed Page
d9906eb150 chore: Release 2022-01-04 09:49:41 -06:00
Daniel Eades
7f71d642cd style: prefer 'char' to 'str' for single character patterns 2022-01-04 09:20:08 -06:00
Ed Page
d392b88bd5 chore: Release 2022-01-03 12:12:28 -06:00
Marti Raudsepp
f10c5d18d9 docs(complete): Fix imports in documentation
Use `shells::Bash` instead of `generators::Bash`
2022-01-02 21:10:18 +02:00
Ed Page
c01ebbac17 chore: Release 2021-12-31 14:35:02 -06:00
Ed Page
bc951e4e53 chore: Release 2021-12-31 13:37:28 -06:00
Ed Page
19b59a2df8 fix(complete): Better organize the API 2021-12-31 13:25:09 -06:00
Ed Page
8d73a0e80f chore: Release 2021-12-31 12:23:47 -06:00
Ed Page
88a335ff97 fix(complete): Give crates more specific names
`clap_generate` originally intended to be "generate anything".  With
`fig`, we already broke one part out.  With #3174's man support, we are
also looking at keeping it separate:
- More freedom to iterate on the API
- Uniqueness (and potential weight) of its dependencies
- man generation is normally more for distribution while completions are
  a mix of being distributed with the app or the app generating the
  completions (which will be exacerbated if we move most completion
  parsing logic to be in Rust)

So `clap_generate` is having a lot more limited of a role than the
original name conveys.   I worry the generic name will be a hindrance to
people discovering and using it (yes, documentation can help but there
are limits).

I hesitated because we are on the verge of releasing 3.0. However, doing
it even later will be even more disruptive because more people will be
using it (crates.io lists ~70 people using `clap_generate`).

To ease things, we are still releasing `clap_generate` as a wrapper
around `clap_complete`.
2021-12-31 12:03:29 -06:00