|
|
- package commands
-
- import (
- "fmt"
-
- "github.com/spf13/cobra"
- )
-
- // NewCompletionCmd returns a cobra.Command that generates bash and zsh
- // completion scripts for the given root command. If hidden is true, the
- // command will not show up in the root command's list of available commands.
- func NewCompletionCmd(rootCmd *cobra.Command, hidden bool) *cobra.Command {
- flagZsh := "zsh"
- cmd := &cobra.Command{
- Use: "completion",
- Short: "Generate shell completion scripts",
- Long: fmt.Sprintf(`Generate Bash and Zsh completion scripts and print them to STDOUT.
-
- Once saved to file, a completion script can be loaded in the shell's
- current session as shown:
-
- $ . <(%s completion)
-
- To configure your bash shell to load completions for each session add to
- your $HOME/.bashrc or $HOME/.profile the following instruction:
-
- . <(%s completion)
- `, rootCmd.Use, rootCmd.Use),
- RunE: func(cmd *cobra.Command, _ []string) error {
- zsh, err := cmd.Flags().GetBool(flagZsh)
- if err != nil {
- return err
- }
- if zsh {
- return rootCmd.GenZshCompletion(cmd.OutOrStdout())
- }
- return rootCmd.GenBashCompletion(cmd.OutOrStdout())
- },
- Hidden: hidden,
- Args: cobra.NoArgs,
- }
-
- cmd.Flags().Bool(flagZsh, false, "Generate Zsh completion script")
-
- return cmd
- }
|