diff --git a/docs/cmd/kn.md b/docs/cmd/kn.md index fe232c2752..c5cc7ac26f 100644 --- a/docs/cmd/kn.md +++ b/docs/cmd/kn.md @@ -20,7 +20,7 @@ Eventing: Manage event subscriptions and channels. Connect up event sources. ### SEE ALSO -* [kn completion](kn_completion.md) - Output bash completion code +* [kn completion](kn_completion.md) - Output shell completion code (default Bash) * [kn revision](kn_revision.md) - Revision command group * [kn service](kn_service.md) - Service command group * [kn version](kn_version.md) - Prints the client version diff --git a/docs/cmd/kn_completion.md b/docs/cmd/kn_completion.md index 4152c01ff4..bdfa095624 100644 --- a/docs/cmd/kn_completion.md +++ b/docs/cmd/kn_completion.md @@ -1,10 +1,10 @@ ## kn completion -Output bash completion code +Output shell completion code (default Bash) ### Synopsis -Output bash completion code +Output shell completion code (default Bash) ``` kn completion [flags] @@ -14,6 +14,7 @@ kn completion [flags] ``` -h, --help help for completion + --zsh Generates completion code for Zsh shell. ``` ### Options inherited from parent commands diff --git a/pkg/kn/commands/completion.go b/pkg/kn/commands/completion.go index adbae5880f..00fce9625a 100644 --- a/pkg/kn/commands/completion.go +++ b/pkg/kn/commands/completion.go @@ -6,15 +6,25 @@ import ( "github.com/spf13/cobra" ) +type CompletionFlags struct { + Zsh bool +} + func NewCompletionCommand(p *KnParams) *cobra.Command { + var completionFlags CompletionFlags + completionCmd := &cobra.Command{ Use: "completion", - Short: "Output bash completion code", - Run: completionAction, + Short: "Output shell completion code (default Bash)", + Run: func(cmd *cobra.Command, args []string) { + if completionFlags.Zsh { + cmd.Root().GenZshCompletion(os.Stdout) + } else { + cmd.Root().GenBashCompletion(os.Stdout) + } + }, } - return completionCmd -} -func completionAction(cmd *cobra.Command, args []string) { - cmd.Root().GenBashCompletion(os.Stdout) + completionCmd.Flags().BoolVar(&completionFlags.Zsh, "zsh", false, "Generates completion code for Zsh shell.") + return completionCmd }