package cli import ( "fmt" "github.com/spf13/cobra" ) func newCompletionCommand() *cobra.Command { return &cobra.Command{ Use: "completion [bash|zsh|fish|powershell]", Short: "Generate shell completion scripts", Args: func(cmd *cobra.Command, args []string) error { if err := cobra.ExactArgs(1)(cmd, args); err != nil { return usageError{err} } return nil }, ValidArgs: []string{"bash", "zsh", "fish", "powershell"}, RunE: func(cmd *cobra.Command, args []string) error { root := cmd.Root() out := cmd.OutOrStdout() switch args[0] { case "bash": return root.GenBashCompletion(out) case "zsh": return root.GenZshCompletion(out) case "fish": return root.GenFishCompletion(out, true) case "powershell": return root.GenPowerShellCompletion(out) default: return fmt.Errorf("unsupported shell %q", args[0]) } }, } }