|
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 :) |