diff --git a/README.md b/README.md index e59f4c321..6ffb620d9 100644 --- a/README.md +++ b/README.md @@ -27,3 +27,22 @@ $ go build ./cmd/... - knative CLI must be built outside of the $GOPATH folder unless you explicitly use `export GO111MODULE=on`. - For building, Go `1.11.4` is required [due to a go mod issue](https://github.com/golang/go/issues/27925) + + +**Bash auto completion:** + +Run following to enable bash auto completion + +```sh +$ source <(kn completion) +``` + +Use TAB to list available sub-commands + +```sh +$ kn +completion revision service + +$ kn revision +describe list +``` diff --git a/pkg/kn/commands/completion.go b/pkg/kn/commands/completion.go new file mode 100644 index 000000000..adbae5880 --- /dev/null +++ b/pkg/kn/commands/completion.go @@ -0,0 +1,20 @@ +package commands + +import ( + "os" + + "github.com/spf13/cobra" +) + +func NewCompletionCommand(p *KnParams) *cobra.Command { + completionCmd := &cobra.Command{ + Use: "completion", + Short: "Output bash completion code", + Run: completionAction, + } + return completionCmd +} + +func completionAction(cmd *cobra.Command, args []string) { + cmd.Root().GenBashCompletion(os.Stdout) +} diff --git a/pkg/kn/commands/root.go b/pkg/kn/commands/root.go index b6fe0a397..204ab3605 100644 --- a/pkg/kn/commands/root.go +++ b/pkg/kn/commands/root.go @@ -72,6 +72,7 @@ Eventing: Manage event subscriptions and channels. Connect up event sources.`, rootCmd.PersistentFlags().StringVar(&kubeCfgFile, "kubeconfig", "", "kubectl config file (default is $HOME/.kube/config)") rootCmd.AddCommand(NewServiceCommand(p)) rootCmd.AddCommand(NewRevisionCommand(p)) + rootCmd.AddCommand(NewCompletionCommand(p)) return rootCmd }