[teamai] Push 87 resource(s) from XingfenD

This commit is contained in:
2026-09-10 16:10:45 +08:00
parent 425c9c078a
commit 65c04def51
1314 changed files with 211681 additions and 0 deletions
@@ -0,0 +1,119 @@
# Cobra Shell Completions Reference
Cobra generates shell completion scripts for bash, zsh, fish, and PowerShell automatically. Subcommand names and flag names are completed for free. You add completions for flag values and positional arguments.
## Built-in completion command
Cobra registers a `completion` subcommand automatically:
```bash
myapp completion bash # generate bash script
myapp completion zsh # generate zsh script
myapp completion fish # generate fish script
myapp completion powershell
# Install (example for zsh):
myapp completion zsh > "${fpath[1]}/_myapp"
```
## ShellCompDirective
The `ShellCompDirective` controls shell behavior after your completion function returns:
| Directive | Meaning |
| --- | --- |
| `ShellCompDirectiveDefault` | Fall back to file completion after your results |
| `ShellCompDirectiveNoFileComp` | Disable file completion fallback |
| `ShellCompDirectiveNoSpace` | Don't add a space after the completion |
| `ShellCompDirectiveFilterFileExt(exts)` | Only show files with given extensions |
| `ShellCompDirectiveFilterDirs(dirs)` | Only show directories |
| `ShellCompDirectiveError` | Signal an error (show no completions) |
Combine with bitwise OR: `cobra.ShellCompDirectiveNoFileComp | cobra.ShellCompDirectiveNoSpace`.
Use `ShellCompDirectiveNoFileComp` whenever your list is exhaustive — it prevents the shell from appending irrelevant files.
## Static arg completions
```go
var getCmd = &cobra.Command{
Use: "get <resource>",
ValidArgs: []string{"pod", "service", "deployment", "configmap"},
Args: cobra.OnlyValidArgs,
RunE: func(cmd *cobra.Command, args []string) error { /* ... */ },
}
```
## Dynamic arg completions
```go
var getCmd = &cobra.Command{
ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
if len(args) > 0 {
// first arg already provided — no more completions
return nil, cobra.ShellCompDirectiveNoFileComp
}
resources, err := listResources(toComplete)
if err != nil {
return nil, cobra.ShellCompDirectiveError
}
return resources, cobra.ShellCompDirectiveNoFileComp
},
}
```
`toComplete` is the prefix the user has typed so far — filter your results by it for responsive completions.
## Flag value completions
```go
func init() {
rootCmd.RegisterFlagCompletionFunc("output", func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
return []string{"json\tJSON output", "yaml\tYAML output", "table\tTable output"}, cobra.ShellCompDirectiveNoFileComp
})
rootCmd.RegisterFlagCompletionFunc("namespace", func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
ns, err := listNamespaces()
if err != nil {
return nil, cobra.ShellCompDirectiveError
}
return ns, cobra.ShellCompDirectiveNoFileComp
})
}
```
Descriptions after `\t` are shown in zsh and fish menus.
## Completion annotations
Mark a flag to complete as a file or directory:
```go
cmd.Flags().String("config", "", "config file")
cmd.MarkFlagFilename("config", "yaml", "yml", "json") // only those extensions
cmd.Flags().String("dir", "", "output directory")
cmd.MarkFlagDirname("dir")
```
## Testing completions
```go
func TestCompletion(t *testing.T) {
rootCmd.SetArgs([]string{"__complete", "get", ""})
buf := new(bytes.Buffer)
rootCmd.SetOut(buf)
rootCmd.Execute()
assert.Contains(t, buf.String(), "pod")
assert.Contains(t, buf.String(), "service")
}
```
`__complete` is cobra's internal completion request verb. Pass the partial args as additional arguments.
## Disabling the completion command
```go
rootCmd.CompletionOptions.DisableDefaultCmd = true // remove the completion subcommand
rootCmd.CompletionOptions.HiddenDefaultCmd = true // keep it but hide from help
```