From f832aafc7f58c6c222cb1263d7779a04c628671f Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Sun, 20 Mar 2016 23:24:41 +0100 Subject: [PATCH] Update generated contrib/completions/bash/kubectl --- contrib/completions/bash/kubectl | 429 +++++++++++++++++++++++++++++-- 1 file changed, 410 insertions(+), 19 deletions(-) diff --git a/contrib/completions/bash/kubectl b/contrib/completions/bash/kubectl index 52e51ff6d2d..bf31f29158d 100644 --- a/contrib/completions/bash/kubectl +++ b/contrib/completions/bash/kubectl @@ -1,4 +1,4 @@ -#!/bin/bash +# bash completion for kubectl -*- shell-script -*- __debug() { @@ -12,7 +12,7 @@ __debug() __my_init_completion() { COMPREPLY=() - _get_comp_words_by_ref cur prev words cword + _get_comp_words_by_ref "$@" cur prev words cword } __index_of_word() @@ -38,7 +38,7 @@ __contains_word() __handle_reply() { - __debug "${FUNCNAME}" + __debug "${FUNCNAME[0]}" case $cur in -*) if [[ $(type -t compopt) = "builtin" ]]; then @@ -52,7 +52,28 @@ __handle_reply() fi COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") ) if [[ $(type -t compopt) = "builtin" ]]; then - [[ $COMPREPLY == *= ]] || compopt +o nospace + [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace + fi + + # complete after --flag=abc + if [[ $cur == *=* ]]; then + if [[ $(type -t compopt) = "builtin" ]]; then + compopt +o nospace + fi + + local index flag + flag="${cur%%=*}" + __index_of_word "${flag}" "${flags_with_completion[@]}" + if [[ ${index} -ge 0 ]]; then + COMPREPLY=() + PREFIX="" + cur="${cur#*=}" + ${flags_completion[${index}]} + if [ -n "${ZSH_VERSION}" ]; then + # zfs completion needs --flag= prefix + eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" + fi + fi fi return 0; ;; @@ -81,9 +102,15 @@ __handle_reply() fi COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") ) + if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then + COMPREPLY=( $(compgen -W "${noun_aliases[*]}" -- "$cur") ) + fi + if [[ ${#COMPREPLY[@]} -eq 0 ]]; then declare -F __custom_func >/dev/null && __custom_func fi + + __ltrim_colon_completions "$cur" } # The arguments should be in the form "ext1|ext2|extn" @@ -101,20 +128,31 @@ __handle_subdirs_in_dir_flag() __handle_flag() { - __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}" + __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" # if a command required a flag, and we found it, unset must_have_one_flag() local flagname=${words[c]} + local flagvalue # if the word contained an = if [[ ${words[c]} == *"="* ]]; then - flagname=${flagname%=*} # strip everything after the = + flagvalue=${flagname#*=} # take in as flagvalue after the = + flagname=${flagname%%=*} # strip everything after the = flagname="${flagname}=" # but put the = back fi - __debug "${FUNCNAME}: looking for ${flagname}" + __debug "${FUNCNAME[0]}: looking for ${flagname}" if __contains_word "${flagname}" "${must_have_one_flag[@]}"; then must_have_one_flag=() fi + # keep flag value with flagname as flaghash + if [ -n "${flagvalue}" ] ; then + flaghash[${flagname}]=${flagvalue} + elif [ -n "${words[ $((c+1)) ]}" ] ; then + flaghash[${flagname}]=${words[ $((c+1)) ]} + else + flaghash[${flagname}]="true" # pad "true" for bool flag + fi + # skip the argument to a two word flag if __contains_word "${words[c]}" "${two_word_flags[@]}"; then c=$((c+1)) @@ -124,17 +162,18 @@ __handle_flag() fi fi - # skip the flag itself c=$((c+1)) } __handle_noun() { - __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}" + __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" if __contains_word "${words[c]}" "${must_have_one_noun[@]}"; then must_have_one_noun=() + elif __contains_word "${words[c]}" "${noun_aliases[@]}"; then + must_have_one_noun=() fi nouns+=("${words[c]}") @@ -143,16 +182,20 @@ __handle_noun() __handle_command() { - __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}" + __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" local next_command if [[ -n ${last_command} ]]; then - next_command="_${last_command}_${words[c]}" + next_command="_${last_command}_${words[c]//:/__}" else - next_command="_${words[c]}" + if [[ $c -eq 0 ]]; then + next_command="_$(basename "${words[c]//:/__}")" + else + next_command="_${words[c]//:/__}" + fi fi c=$((c+1)) - __debug "${FUNCNAME}: looking for ${next_command}" + __debug "${FUNCNAME[0]}: looking for ${next_command}" declare -F $next_command >/dev/null && $next_command } @@ -162,11 +205,13 @@ __handle_word() __handle_reply return fi - __debug "${FUNCNAME}: c is $c words[c] is ${words[c]}" + __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" if [[ "${words[c]}" == -* ]]; then __handle_flag elif __contains_word "${words[c]}" "${commands[@]}"; then __handle_command + elif [[ $c -eq 0 ]] && __contains_word "$(basename "${words[c]}")" "${commands[@]}"; then + __handle_command else __handle_noun fi @@ -174,12 +219,47 @@ __handle_word() } # call kubectl get $1, +__kubectl_namespace_flag() +{ + local ret two_word_ns + ret="" + two_word_ns=false + for w in "${words[@]}"; do + if [ "$two_word_ns" = true ]; then + ret="--namespace=${w}" + two_word_ns=false + continue + fi + case "${w}" in + --namespace=*) + ret=${w} + ;; + --namespace) + two_word_ns=true + ;; + --all-namespaces) + ret=${w} + ;; + esac + done + echo $ret +} + +__kubectl_get_namespaces() +{ + local template kubectl_out + template="{{ range .items }}{{ .metadata.name }} {{ end }}" + if kubectl_out=$(kubectl get -o template --template="${template}" namespace 2>/dev/null); then + COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) ) + fi +} + __kubectl_parse_get() { local template template="{{ range .items }}{{ .metadata.name }} {{ end }}" local kubectl_out - if kubectl_out=$(kubectl get -o template --template="${template}" "$1" 2>/dev/null); then + if kubectl_out=$(kubectl get $(__kubectl_namespace_flag) -o template --template="${template}" "$1" 2>/dev/null); then COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) ) fi } @@ -215,7 +295,7 @@ __kubectl_get_containers() fi local last=${nouns[${len} -1]} local kubectl_out - if kubectl_out=$(kubectl get -o template --template="${template}" pods "${last}" 2>/dev/null); then + if kubectl_out=$(kubectl get $(__kubectl_namespace_flag) -o template --template="${template}" pods "${last}" 2>/dev/null); then COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) ) fi } @@ -311,6 +391,8 @@ _kubectl_get() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -348,6 +430,49 @@ _kubectl_get() must_have_one_noun+=("serviceaccount") must_have_one_noun+=("thirdpartyresource") must_have_one_noun+=("thirdpartyresourcedata") + noun_aliases=() + noun_aliases+=("componentstatuses") + noun_aliases+=("configmaps") + noun_aliases+=("cs") + noun_aliases+=("daemonsets") + noun_aliases+=("deployments") + noun_aliases+=("ds") + noun_aliases+=("endpoints") + noun_aliases+=("ep") + noun_aliases+=("ev") + noun_aliases+=("events") + noun_aliases+=("horizontalpodautoscalers") + noun_aliases+=("hpa") + noun_aliases+=("ing") + noun_aliases+=("ingresses") + noun_aliases+=("jobs") + noun_aliases+=("limitranges") + noun_aliases+=("limits") + noun_aliases+=("namespaces") + noun_aliases+=("no") + noun_aliases+=("nodes") + noun_aliases+=("ns") + noun_aliases+=("persistentvolumeclaims") + noun_aliases+=("persistentvolumes") + noun_aliases+=("po") + noun_aliases+=("pods") + noun_aliases+=("podsecuritypolicies") + noun_aliases+=("podtemplates") + noun_aliases+=("pv") + noun_aliases+=("pvc") + noun_aliases+=("quota") + noun_aliases+=("rc") + noun_aliases+=("replicasets") + noun_aliases+=("replicationcontrollers") + noun_aliases+=("resourcequotas") + noun_aliases+=("rs") + noun_aliases+=("sa") + noun_aliases+=("secrets") + noun_aliases+=("serviceaccounts") + noun_aliases+=("services") + noun_aliases+=("svc") + noun_aliases+=("thirdpartyresourcedatas") + noun_aliases+=("thirdpartyresources") } _kubectl_describe() @@ -386,6 +511,8 @@ _kubectl_describe() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -419,6 +546,43 @@ _kubectl_describe() must_have_one_noun+=("secret") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") + noun_aliases=() + noun_aliases+=("configmaps") + noun_aliases+=("daemonsets") + noun_aliases+=("deployments") + noun_aliases+=("ds") + noun_aliases+=("endpoints") + noun_aliases+=("ep") + noun_aliases+=("horizontalpodautoscalers") + noun_aliases+=("horizontalpodautoscalers") + noun_aliases+=("hpa") + noun_aliases+=("ing") + noun_aliases+=("ingresses") + noun_aliases+=("jobs") + noun_aliases+=("jobs") + noun_aliases+=("limitranges") + noun_aliases+=("limits") + noun_aliases+=("namespaces") + noun_aliases+=("no") + noun_aliases+=("nodes") + noun_aliases+=("ns") + noun_aliases+=("persistentvolumeclaims") + noun_aliases+=("persistentvolumes") + noun_aliases+=("po") + noun_aliases+=("pods") + noun_aliases+=("pv") + noun_aliases+=("pvc") + noun_aliases+=("quota") + noun_aliases+=("rc") + noun_aliases+=("replicasets") + noun_aliases+=("replicationcontrollers") + noun_aliases+=("resourcequotas") + noun_aliases+=("rs") + noun_aliases+=("sa") + noun_aliases+=("secrets") + noun_aliases+=("serviceaccounts") + noun_aliases+=("services") + noun_aliases+=("svc") } _kubectl_create_namespace() @@ -467,6 +631,8 @@ _kubectl_create_namespace() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -479,6 +645,7 @@ _kubectl_create_namespace() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_create_secret_docker-registry() @@ -532,6 +699,8 @@ _kubectl_create_secret_docker-registry() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -547,6 +716,7 @@ _kubectl_create_secret_docker-registry() must_have_one_flag+=("--docker-password=") must_have_one_flag+=("--docker-username=") must_have_one_noun=() + noun_aliases=() } _kubectl_create_secret_generic() @@ -598,6 +768,8 @@ _kubectl_create_secret_generic() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -610,6 +782,7 @@ _kubectl_create_secret_generic() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_create_secret() @@ -639,6 +812,8 @@ _kubectl_create_secret() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -651,6 +826,7 @@ _kubectl_create_secret() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_create_configmap() @@ -701,6 +877,8 @@ _kubectl_create_configmap() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -713,6 +891,7 @@ _kubectl_create_configmap() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_create_serviceaccount() @@ -762,6 +941,8 @@ _kubectl_create_serviceaccount() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -774,6 +955,7 @@ _kubectl_create_serviceaccount() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_create() @@ -822,6 +1004,8 @@ _kubectl_create() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -836,6 +1020,7 @@ _kubectl_create() must_have_one_flag+=("--filename=") must_have_one_flag+=("-f") must_have_one_noun=() + noun_aliases=() } _kubectl_replace() @@ -884,6 +1069,8 @@ _kubectl_replace() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -898,6 +1085,7 @@ _kubectl_replace() must_have_one_flag+=("--filename=") must_have_one_flag+=("-f") must_have_one_noun=() + noun_aliases=() } _kubectl_patch() @@ -940,6 +1128,8 @@ _kubectl_patch() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -954,6 +1144,7 @@ _kubectl_patch() must_have_one_flag+=("--patch=") must_have_one_flag+=("-p") must_have_one_noun=() + noun_aliases=() } _kubectl_delete() @@ -999,6 +1190,8 @@ _kubectl_delete() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1036,6 +1229,49 @@ _kubectl_delete() must_have_one_noun+=("serviceaccount") must_have_one_noun+=("thirdpartyresource") must_have_one_noun+=("thirdpartyresourcedata") + noun_aliases=() + noun_aliases+=("componentstatuses") + noun_aliases+=("configmaps") + noun_aliases+=("cs") + noun_aliases+=("daemonsets") + noun_aliases+=("deployments") + noun_aliases+=("ds") + noun_aliases+=("endpoints") + noun_aliases+=("ep") + noun_aliases+=("ev") + noun_aliases+=("events") + noun_aliases+=("horizontalpodautoscalers") + noun_aliases+=("hpa") + noun_aliases+=("ing") + noun_aliases+=("ingresses") + noun_aliases+=("jobs") + noun_aliases+=("limitranges") + noun_aliases+=("limits") + noun_aliases+=("namespaces") + noun_aliases+=("no") + noun_aliases+=("nodes") + noun_aliases+=("ns") + noun_aliases+=("persistentvolumeclaims") + noun_aliases+=("persistentvolumes") + noun_aliases+=("po") + noun_aliases+=("pods") + noun_aliases+=("podsecuritypolicies") + noun_aliases+=("podtemplates") + noun_aliases+=("pv") + noun_aliases+=("pvc") + noun_aliases+=("quota") + noun_aliases+=("rc") + noun_aliases+=("replicasets") + noun_aliases+=("replicationcontrollers") + noun_aliases+=("resourcequotas") + noun_aliases+=("rs") + noun_aliases+=("sa") + noun_aliases+=("secrets") + noun_aliases+=("serviceaccounts") + noun_aliases+=("services") + noun_aliases+=("svc") + noun_aliases+=("thirdpartyresourcedatas") + noun_aliases+=("thirdpartyresources") } _kubectl_edit() @@ -1078,6 +1314,8 @@ _kubectl_edit() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1090,6 +1328,7 @@ _kubectl_edit() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_apply() @@ -1133,6 +1372,8 @@ _kubectl_apply() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1147,6 +1388,7 @@ _kubectl_apply() must_have_one_flag+=("--filename=") must_have_one_flag+=("-f") must_have_one_noun=() + noun_aliases=() } _kubectl_namespace() @@ -1174,6 +1416,8 @@ _kubectl_namespace() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1186,6 +1430,7 @@ _kubectl_namespace() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_logs() @@ -1226,6 +1471,8 @@ _kubectl_logs() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1238,6 +1485,7 @@ _kubectl_logs() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_rolling-update() @@ -1298,6 +1546,8 @@ _kubectl_rolling-update() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1313,6 +1563,7 @@ _kubectl_rolling-update() must_have_one_flag+=("-f") must_have_one_flag+=("--image=") must_have_one_noun=() + noun_aliases=() } _kubectl_scale() @@ -1356,6 +1607,8 @@ _kubectl_scale() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1369,6 +1622,7 @@ _kubectl_scale() must_have_one_flag=() must_have_one_flag+=("--replicas=") must_have_one_noun=() + noun_aliases=() } _kubectl_cordon() @@ -1396,6 +1650,8 @@ _kubectl_cordon() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1408,6 +1664,7 @@ _kubectl_cordon() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_drain() @@ -1438,6 +1695,8 @@ _kubectl_drain() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1450,6 +1709,7 @@ _kubectl_drain() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_uncordon() @@ -1477,6 +1737,8 @@ _kubectl_uncordon() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1489,6 +1751,7 @@ _kubectl_uncordon() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_attach() @@ -1522,6 +1785,8 @@ _kubectl_attach() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1534,6 +1799,7 @@ _kubectl_attach() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_exec() @@ -1569,6 +1835,8 @@ _kubectl_exec() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1581,6 +1849,7 @@ _kubectl_exec() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_port-forward() @@ -1610,6 +1879,8 @@ _kubectl_port-forward() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1622,6 +1893,7 @@ _kubectl_port-forward() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_proxy() @@ -1664,6 +1936,8 @@ _kubectl_proxy() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1676,6 +1950,7 @@ _kubectl_proxy() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_run() @@ -1744,6 +2019,8 @@ _kubectl_run() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1757,6 +2034,7 @@ _kubectl_run() must_have_one_flag=() must_have_one_flag+=("--image=") must_have_one_noun=() + noun_aliases=() } _kubectl_expose() @@ -1824,6 +2102,8 @@ _kubectl_expose() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1836,6 +2116,7 @@ _kubectl_expose() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_autoscale() @@ -1894,6 +2175,8 @@ _kubectl_autoscale() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1907,6 +2190,7 @@ _kubectl_autoscale() must_have_one_flag=() must_have_one_flag+=("--max=") must_have_one_noun=() + noun_aliases=() } _kubectl_rollout_history() @@ -1943,6 +2227,8 @@ _kubectl_rollout_history() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -1955,6 +2241,7 @@ _kubectl_rollout_history() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_rollout_pause() @@ -1990,6 +2277,8 @@ _kubectl_rollout_pause() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2002,6 +2291,7 @@ _kubectl_rollout_pause() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_rollout_resume() @@ -2037,6 +2327,8 @@ _kubectl_rollout_resume() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2049,6 +2341,7 @@ _kubectl_rollout_resume() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_rollout_undo() @@ -2085,6 +2378,8 @@ _kubectl_rollout_undo() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2097,6 +2392,7 @@ _kubectl_rollout_undo() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_rollout() @@ -2128,6 +2424,8 @@ _kubectl_rollout() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2140,6 +2438,7 @@ _kubectl_rollout() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_label() @@ -2197,6 +2496,8 @@ _kubectl_label() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2234,6 +2535,49 @@ _kubectl_label() must_have_one_noun+=("serviceaccount") must_have_one_noun+=("thirdpartyresource") must_have_one_noun+=("thirdpartyresourcedata") + noun_aliases=() + noun_aliases+=("componentstatuses") + noun_aliases+=("configmaps") + noun_aliases+=("cs") + noun_aliases+=("daemonsets") + noun_aliases+=("deployments") + noun_aliases+=("ds") + noun_aliases+=("endpoints") + noun_aliases+=("ep") + noun_aliases+=("ev") + noun_aliases+=("events") + noun_aliases+=("horizontalpodautoscalers") + noun_aliases+=("hpa") + noun_aliases+=("ing") + noun_aliases+=("ingresses") + noun_aliases+=("jobs") + noun_aliases+=("limitranges") + noun_aliases+=("limits") + noun_aliases+=("namespaces") + noun_aliases+=("no") + noun_aliases+=("nodes") + noun_aliases+=("ns") + noun_aliases+=("persistentvolumeclaims") + noun_aliases+=("persistentvolumes") + noun_aliases+=("po") + noun_aliases+=("pods") + noun_aliases+=("podsecuritypolicies") + noun_aliases+=("podtemplates") + noun_aliases+=("pv") + noun_aliases+=("pvc") + noun_aliases+=("quota") + noun_aliases+=("rc") + noun_aliases+=("replicasets") + noun_aliases+=("replicationcontrollers") + noun_aliases+=("resourcequotas") + noun_aliases+=("rs") + noun_aliases+=("sa") + noun_aliases+=("secrets") + noun_aliases+=("serviceaccounts") + noun_aliases+=("services") + noun_aliases+=("svc") + noun_aliases+=("thirdpartyresourcedatas") + noun_aliases+=("thirdpartyresources") } _kubectl_annotate() @@ -2290,6 +2634,8 @@ _kubectl_annotate() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2302,6 +2648,7 @@ _kubectl_annotate() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_config_view() @@ -2347,6 +2694,8 @@ _kubectl_config_view() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2359,6 +2708,7 @@ _kubectl_config_view() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_config_set-cluster() @@ -2390,6 +2740,8 @@ _kubectl_config_set-cluster() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--stderrthreshold=") flags+=("--token=") @@ -2400,6 +2752,7 @@ _kubectl_config_set-cluster() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_config_set-credentials() @@ -2435,6 +2788,8 @@ _kubectl_config_set-credentials() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--server=") two_word_flags+=("-s") flags+=("--stderrthreshold=") @@ -2444,6 +2799,7 @@ _kubectl_config_set-credentials() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_config_set-context() @@ -2483,6 +2839,7 @@ _kubectl_config_set-context() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_config_set() @@ -2510,6 +2867,8 @@ _kubectl_config_set() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2522,6 +2881,7 @@ _kubectl_config_set() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_config_unset() @@ -2549,6 +2909,8 @@ _kubectl_config_unset() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2561,6 +2923,7 @@ _kubectl_config_unset() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_config_current-context() @@ -2588,6 +2951,8 @@ _kubectl_config_current-context() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2600,6 +2965,7 @@ _kubectl_config_current-context() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_config_use-context() @@ -2627,6 +2993,8 @@ _kubectl_config_use-context() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2639,6 +3007,7 @@ _kubectl_config_use-context() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_config() @@ -2674,6 +3043,8 @@ _kubectl_config() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2686,6 +3057,7 @@ _kubectl_config() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_cluster-info() @@ -2714,6 +3086,8 @@ _kubectl_cluster-info() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2726,6 +3100,7 @@ _kubectl_cluster-info() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_api-versions() @@ -2753,6 +3128,8 @@ _kubectl_api-versions() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2765,6 +3142,7 @@ _kubectl_api-versions() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_version() @@ -2794,6 +3172,8 @@ _kubectl_version() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2806,6 +3186,7 @@ _kubectl_version() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_explain() @@ -2835,6 +3216,8 @@ _kubectl_explain() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2847,6 +3230,7 @@ _kubectl_explain() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } _kubectl_convert() @@ -2902,6 +3286,8 @@ _kubectl_convert() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2916,6 +3302,7 @@ _kubectl_convert() must_have_one_flag+=("--filename=") must_have_one_flag+=("-f") must_have_one_noun=() + noun_aliases=() } _kubectl() @@ -2974,6 +3361,8 @@ _kubectl() flags+=("--logtostderr") flags+=("--match-server-version") flags+=("--namespace=") + flags_with_completion+=("--namespace") + flags_completion+=("__kubectl_get_namespaces") flags+=("--password=") flags+=("--server=") two_word_flags+=("-s") @@ -2986,15 +3375,17 @@ _kubectl() must_have_one_flag=() must_have_one_noun=() + noun_aliases=() } __start_kubectl() { local cur prev words cword + declare -A flaghash 2>/dev/null || : if declare -F _init_completion >/dev/null 2>&1; then _init_completion -s || return else - __my_init_completion || return + __my_init_completion -n "=" || return fi local c=0 @@ -3012,9 +3403,9 @@ __start_kubectl() } if [[ $(type -t compopt) = "builtin" ]]; then - complete -F __start_kubectl kubectl + complete -o default -F __start_kubectl kubectl else - complete -o nospace -F __start_kubectl kubectl + complete -o default -o nospace -F __start_kubectl kubectl fi # ex: ts=4 sw=4 et filetype=sh