From 4da41ca56c163b00ed4c71c73a694a3366d770f0 Mon Sep 17 00:00:00 2001 From: Kazuki Suda Date: Sat, 25 Feb 2017 23:54:56 +0900 Subject: [PATCH] Support --context flag completion for kubectl --- pkg/kubectl/cmd/cmd.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkg/kubectl/cmd/cmd.go b/pkg/kubectl/cmd/cmd.go index 1ceb0ec079c..fc1e56b8452 100644 --- a/pkg/kubectl/cmd/cmd.go +++ b/pkg/kubectl/cmd/cmd.go @@ -75,6 +75,15 @@ __kubectl_get_namespaces() fi } +__kubectl_get_contexts() +{ + local template kubectl_out + template="{{ range .contexts }}{{ .name }} {{ end }}" + if kubectl_out=$(kubectl config $(__kubectl_override_flags) -o template --template="${template}" view 2>/dev/null); then + COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) ) + fi +} + __kubectl_parse_get() { local template @@ -324,6 +333,16 @@ func NewKubectlCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cob ) } + if cmds.Flag("context") != nil { + if cmds.Flag("context").Annotations == nil { + cmds.Flag("context").Annotations = map[string][]string{} + } + cmds.Flag("context").Annotations[cobra.BashCompCustom] = append( + cmds.Flag("context").Annotations[cobra.BashCompCustom], + "__kubectl_get_contexts", + ) + } + cmds.AddCommand(cmdconfig.NewCmdConfig(clientcmd.NewDefaultPathOptions(), out, err)) cmds.AddCommand(NewCmdVersion(f, out)) cmds.AddCommand(NewCmdApiVersions(f, out))