diff --git a/pkg/kubectl/cmd/cmd.go b/pkg/kubectl/cmd/cmd.go index b96a796689d..f8f729d9474 100644 --- a/pkg/kubectl/cmd/cmd.go +++ b/pkg/kubectl/cmd/cmd.go @@ -76,6 +76,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 @@ -326,6 +335,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))