251
|
1 |
## Generating Zsh Completion for your cobra.Command |
|
2 |
|
|
3 |
Cobra supports native Zsh completion generated from the root `cobra.Command`. |
|
4 |
The generated completion script should be put somewhere in your `$fpath` named |
|
5 |
`_<YOUR COMMAND>`. |
|
6 |
|
|
7 |
### What's Supported |
|
8 |
|
|
9 |
* Completion for all non-hidden subcommands using their `.Short` description. |
|
10 |
* Completion for all non-hidden flags using the following rules: |
|
11 |
* Filename completion works by marking the flag with `cmd.MarkFlagFilename...` |
|
12 |
family of commands. |
|
13 |
* The requirement for argument to the flag is decided by the `.NoOptDefVal` |
|
14 |
flag value - if it's empty then completion will expect an argument. |
|
15 |
* Flags of one of the various `*Array` and `*Slice` types supports multiple |
|
16 |
specifications (with or without argument depending on the specific type). |
|
17 |
* Completion of positional arguments using the following rules: |
|
18 |
* Argument position for all options below starts at `1`. If argument position |
|
19 |
`0` is requested it will raise an error. |
|
20 |
* Use `command.MarkZshCompPositionalArgumentFile` to complete filenames. Glob |
|
21 |
patterns (e.g. `"*.log"`) are optional - if not specified it will offer to |
|
22 |
complete all file types. |
|
23 |
* Use `command.MarkZshCompPositionalArgumentWords` to offer specific words for |
|
24 |
completion. At least one word is required. |
|
25 |
* It's possible to specify completion for some arguments and leave some |
|
26 |
unspecified (e.g. offer words for second argument but nothing for first |
|
27 |
argument). This will cause no completion for first argument but words |
|
28 |
completion for second argument. |
|
29 |
* If no argument completion was specified for 1st argument (but optionally was |
|
30 |
specified for 2nd) and the command has `ValidArgs` it will be used as |
|
31 |
completion options for 1st argument. |
|
32 |
* Argument completions only offered for commands with no subcommands. |
|
33 |
|
|
34 |
### What's not yet Supported |
|
35 |
|
|
36 |
* Custom completion scripts are not supported yet (We should probably create zsh |
|
37 |
specific one, doesn't make sense to re-use the bash one as the functions will |
|
38 |
be different). |
|
39 |
* Whatever other feature you're looking for and doesn't exist :) |