github.com/felipejfc/helm@v2.1.2+incompatible/scripts/completions.bash (about)

     1  # bash completion for helm                                 -*- shell-script -*-
     2  
     3  __debug()
     4  {
     5      if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then
     6          echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
     7      fi
     8  }
     9  
    10  # Homebrew on Macs have version 1.3 of bash-completion which doesn't include
    11  # _init_completion. This is a very minimal version of that function.
    12  __my_init_completion()
    13  {
    14      COMPREPLY=()
    15      _get_comp_words_by_ref "$@" cur prev words cword
    16  }
    17  
    18  __index_of_word()
    19  {
    20      local w word=$1
    21      shift
    22      index=0
    23      for w in "$@"; do
    24          [[ $w = "$word" ]] && return
    25          index=$((index+1))
    26      done
    27      index=-1
    28  }
    29  
    30  __contains_word()
    31  {
    32      local w word=$1; shift
    33      for w in "$@"; do
    34          [[ $w = "$word" ]] && return
    35      done
    36      return 1
    37  }
    38  
    39  __handle_reply()
    40  {
    41      __debug "${FUNCNAME[0]}"
    42      case $cur in
    43          -*)
    44              if [[ $(type -t compopt) = "builtin" ]]; then
    45                  compopt -o nospace
    46              fi
    47              local allflags
    48              if [ ${#must_have_one_flag[@]} -ne 0 ]; then
    49                  allflags=("${must_have_one_flag[@]}")
    50              else
    51                  allflags=("${flags[*]} ${two_word_flags[*]}")
    52              fi
    53              COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") )
    54              if [[ $(type -t compopt) = "builtin" ]]; then
    55                  [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace
    56              fi
    57  
    58              # complete after --flag=abc
    59              if [[ $cur == *=* ]]; then
    60                  if [[ $(type -t compopt) = "builtin" ]]; then
    61                      compopt +o nospace
    62                  fi
    63  
    64                  local index flag
    65                  flag="${cur%%=*}"
    66                  __index_of_word "${flag}" "${flags_with_completion[@]}"
    67                  if [[ ${index} -ge 0 ]]; then
    68                      COMPREPLY=()
    69                      PREFIX=""
    70                      cur="${cur#*=}"
    71                      ${flags_completion[${index}]}
    72                      if [ -n "${ZSH_VERSION}" ]; then
    73                          # zfs completion needs --flag= prefix
    74                          eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )"
    75                      fi
    76                  fi
    77              fi
    78              return 0;
    79              ;;
    80      esac
    81  
    82      # check if we are handling a flag with special work handling
    83      local index
    84      __index_of_word "${prev}" "${flags_with_completion[@]}"
    85      if [[ ${index} -ge 0 ]]; then
    86          ${flags_completion[${index}]}
    87          return
    88      fi
    89  
    90      # we are parsing a flag and don't have a special handler, no completion
    91      if [[ ${cur} != "${words[cword]}" ]]; then
    92          return
    93      fi
    94  
    95      local completions
    96      completions=("${commands[@]}")
    97      if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then
    98          completions=("${must_have_one_noun[@]}")
    99      fi
   100      if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then
   101          completions+=("${must_have_one_flag[@]}")
   102      fi
   103      COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") )
   104  
   105      if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then
   106          COMPREPLY=( $(compgen -W "${noun_aliases[*]}" -- "$cur") )
   107      fi
   108  
   109      if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
   110          declare -F __custom_func >/dev/null && __custom_func
   111      fi
   112  
   113      __ltrim_colon_completions "$cur"
   114  }
   115  
   116  # The arguments should be in the form "ext1|ext2|extn"
   117  __handle_filename_extension_flag()
   118  {
   119      local ext="$1"
   120      _filedir "@(${ext})"
   121  }
   122  
   123  __handle_subdirs_in_dir_flag()
   124  {
   125      local dir="$1"
   126      pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1
   127  }
   128  
   129  __handle_flag()
   130  {
   131      __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
   132  
   133      # if a command required a flag, and we found it, unset must_have_one_flag()
   134      local flagname=${words[c]}
   135      local flagvalue
   136      # if the word contained an =
   137      if [[ ${words[c]} == *"="* ]]; then
   138          flagvalue=${flagname#*=} # take in as flagvalue after the =
   139          flagname=${flagname%%=*} # strip everything after the =
   140          flagname="${flagname}=" # but put the = back
   141      fi
   142      __debug "${FUNCNAME[0]}: looking for ${flagname}"
   143      if __contains_word "${flagname}" "${must_have_one_flag[@]}"; then
   144          must_have_one_flag=()
   145      fi
   146  
   147      # if you set a flag which only applies to this command, don't show subcommands
   148      if __contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then
   149        commands=()
   150      fi
   151  
   152      # keep flag value with flagname as flaghash
   153      if [ -n "${flagvalue}" ] ; then
   154          flaghash[${flagname}]=${flagvalue}
   155      elif [ -n "${words[ $((c+1)) ]}" ] ; then
   156          flaghash[${flagname}]=${words[ $((c+1)) ]}
   157      else
   158          flaghash[${flagname}]="true" # pad "true" for bool flag
   159      fi
   160  
   161      # skip the argument to a two word flag
   162      if __contains_word "${words[c]}" "${two_word_flags[@]}"; then
   163          c=$((c+1))
   164          # if we are looking for a flags value, don't show commands
   165          if [[ $c -eq $cword ]]; then
   166              commands=()
   167          fi
   168      fi
   169  
   170      c=$((c+1))
   171  
   172  }
   173  
   174  __handle_noun()
   175  {
   176      __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
   177  
   178      if __contains_word "${words[c]}" "${must_have_one_noun[@]}"; then
   179          must_have_one_noun=()
   180      elif __contains_word "${words[c]}" "${noun_aliases[@]}"; then
   181          must_have_one_noun=()
   182      fi
   183  
   184      nouns+=("${words[c]}")
   185      c=$((c+1))
   186  }
   187  
   188  __handle_command()
   189  {
   190      __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
   191  
   192      local next_command
   193      if [[ -n ${last_command} ]]; then
   194          next_command="_${last_command}_${words[c]//:/__}"
   195      else
   196          if [[ $c -eq 0 ]]; then
   197              next_command="_$(basename "${words[c]//:/__}")"
   198          else
   199              next_command="_${words[c]//:/__}"
   200          fi
   201      fi
   202      c=$((c+1))
   203      __debug "${FUNCNAME[0]}: looking for ${next_command}"
   204      declare -F $next_command >/dev/null && $next_command
   205  }
   206  
   207  __handle_word()
   208  {
   209      if [[ $c -ge $cword ]]; then
   210          __handle_reply
   211          return
   212      fi
   213      __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
   214      if [[ "${words[c]}" == -* ]]; then
   215          __handle_flag
   216      elif __contains_word "${words[c]}" "${commands[@]}"; then
   217          __handle_command
   218      elif [[ $c -eq 0 ]] && __contains_word "$(basename "${words[c]}")" "${commands[@]}"; then
   219          __handle_command
   220      else
   221          __handle_noun
   222      fi
   223      __handle_word
   224  }
   225  
   226  _helm_create()
   227  {
   228      last_command="helm_create"
   229      commands=()
   230  
   231      flags=()
   232      two_word_flags=()
   233      local_nonpersistent_flags=()
   234      flags_with_completion=()
   235      flags_completion=()
   236  
   237      flags+=("--debug")
   238      flags+=("--home=")
   239      flags+=("--host=")
   240      flags+=("--kube-context=")
   241  
   242      must_have_one_flag=()
   243      must_have_one_noun=()
   244      noun_aliases=()
   245  }
   246  
   247  _helm_delete()
   248  {
   249      last_command="helm_delete"
   250      commands=()
   251  
   252      flags=()
   253      two_word_flags=()
   254      local_nonpersistent_flags=()
   255      flags_with_completion=()
   256      flags_completion=()
   257  
   258      flags+=("--dry-run")
   259      local_nonpersistent_flags+=("--dry-run")
   260      flags+=("--no-hooks")
   261      local_nonpersistent_flags+=("--no-hooks")
   262      flags+=("--purge")
   263      local_nonpersistent_flags+=("--purge")
   264      flags+=("--debug")
   265      flags+=("--home=")
   266      flags+=("--host=")
   267      flags+=("--kube-context=")
   268  
   269      must_have_one_flag=()
   270      must_have_one_noun=()
   271      noun_aliases=()
   272  }
   273  
   274  _helm_dependency_build()
   275  {
   276      last_command="helm_dependency_build"
   277      commands=()
   278  
   279      flags=()
   280      two_word_flags=()
   281      local_nonpersistent_flags=()
   282      flags_with_completion=()
   283      flags_completion=()
   284  
   285      flags+=("--keyring=")
   286      local_nonpersistent_flags+=("--keyring=")
   287      flags+=("--verify")
   288      local_nonpersistent_flags+=("--verify")
   289      flags+=("--debug")
   290      flags+=("--home=")
   291      flags+=("--host=")
   292      flags+=("--kube-context=")
   293  
   294      must_have_one_flag=()
   295      must_have_one_noun=()
   296      noun_aliases=()
   297  }
   298  
   299  _helm_dependency_list()
   300  {
   301      last_command="helm_dependency_list"
   302      commands=()
   303  
   304      flags=()
   305      two_word_flags=()
   306      local_nonpersistent_flags=()
   307      flags_with_completion=()
   308      flags_completion=()
   309  
   310      flags+=("--debug")
   311      flags+=("--home=")
   312      flags+=("--host=")
   313      flags+=("--kube-context=")
   314  
   315      must_have_one_flag=()
   316      must_have_one_noun=()
   317      noun_aliases=()
   318  }
   319  
   320  _helm_dependency_update()
   321  {
   322      last_command="helm_dependency_update"
   323      commands=()
   324  
   325      flags=()
   326      two_word_flags=()
   327      local_nonpersistent_flags=()
   328      flags_with_completion=()
   329      flags_completion=()
   330  
   331      flags+=("--keyring=")
   332      local_nonpersistent_flags+=("--keyring=")
   333      flags+=("--verify")
   334      local_nonpersistent_flags+=("--verify")
   335      flags+=("--debug")
   336      flags+=("--home=")
   337      flags+=("--host=")
   338      flags+=("--kube-context=")
   339  
   340      must_have_one_flag=()
   341      must_have_one_noun=()
   342      noun_aliases=()
   343  }
   344  
   345  _helm_dependency()
   346  {
   347      last_command="helm_dependency"
   348      commands=()
   349      commands+=("build")
   350      commands+=("list")
   351      commands+=("update")
   352  
   353      flags=()
   354      two_word_flags=()
   355      local_nonpersistent_flags=()
   356      flags_with_completion=()
   357      flags_completion=()
   358  
   359      flags+=("--debug")
   360      flags+=("--home=")
   361      flags+=("--host=")
   362      flags+=("--kube-context=")
   363  
   364      must_have_one_flag=()
   365      must_have_one_noun=()
   366      noun_aliases=()
   367  }
   368  
   369  _helm_fetch()
   370  {
   371      last_command="helm_fetch"
   372      commands=()
   373  
   374      flags=()
   375      two_word_flags=()
   376      local_nonpersistent_flags=()
   377      flags_with_completion=()
   378      flags_completion=()
   379  
   380      flags+=("--destination=")
   381      two_word_flags+=("-d")
   382      local_nonpersistent_flags+=("--destination=")
   383      flags+=("--keyring=")
   384      local_nonpersistent_flags+=("--keyring=")
   385      flags+=("--untar")
   386      local_nonpersistent_flags+=("--untar")
   387      flags+=("--untardir=")
   388      local_nonpersistent_flags+=("--untardir=")
   389      flags+=("--verify")
   390      local_nonpersistent_flags+=("--verify")
   391      flags+=("--version=")
   392      local_nonpersistent_flags+=("--version=")
   393      flags+=("--debug")
   394      flags+=("--home=")
   395      flags+=("--host=")
   396      flags+=("--kube-context=")
   397  
   398      must_have_one_flag=()
   399      must_have_one_noun=()
   400      noun_aliases=()
   401  }
   402  
   403  _helm_get_hooks()
   404  {
   405      last_command="helm_get_hooks"
   406      commands=()
   407  
   408      flags=()
   409      two_word_flags=()
   410      local_nonpersistent_flags=()
   411      flags_with_completion=()
   412      flags_completion=()
   413  
   414      flags+=("--revision=")
   415      local_nonpersistent_flags+=("--revision=")
   416      flags+=("--debug")
   417      flags+=("--home=")
   418      flags+=("--host=")
   419      flags+=("--kube-context=")
   420  
   421      must_have_one_flag=()
   422      must_have_one_noun=()
   423      noun_aliases=()
   424  }
   425  
   426  _helm_get_manifest()
   427  {
   428      last_command="helm_get_manifest"
   429      commands=()
   430  
   431      flags=()
   432      two_word_flags=()
   433      local_nonpersistent_flags=()
   434      flags_with_completion=()
   435      flags_completion=()
   436  
   437      flags+=("--revision=")
   438      local_nonpersistent_flags+=("--revision=")
   439      flags+=("--debug")
   440      flags+=("--home=")
   441      flags+=("--host=")
   442      flags+=("--kube-context=")
   443  
   444      must_have_one_flag=()
   445      must_have_one_noun=()
   446      noun_aliases=()
   447  }
   448  
   449  _helm_get_values()
   450  {
   451      last_command="helm_get_values"
   452      commands=()
   453  
   454      flags=()
   455      two_word_flags=()
   456      local_nonpersistent_flags=()
   457      flags_with_completion=()
   458      flags_completion=()
   459  
   460      flags+=("--all")
   461      flags+=("-a")
   462      local_nonpersistent_flags+=("--all")
   463      flags+=("--revision=")
   464      local_nonpersistent_flags+=("--revision=")
   465      flags+=("--debug")
   466      flags+=("--home=")
   467      flags+=("--host=")
   468      flags+=("--kube-context=")
   469  
   470      must_have_one_flag=()
   471      must_have_one_noun=()
   472      noun_aliases=()
   473  }
   474  
   475  _helm_get()
   476  {
   477      last_command="helm_get"
   478      commands=()
   479      commands+=("hooks")
   480      commands+=("manifest")
   481      commands+=("values")
   482  
   483      flags=()
   484      two_word_flags=()
   485      local_nonpersistent_flags=()
   486      flags_with_completion=()
   487      flags_completion=()
   488  
   489      flags+=("--revision=")
   490      local_nonpersistent_flags+=("--revision=")
   491      flags+=("--debug")
   492      flags+=("--home=")
   493      flags+=("--host=")
   494      flags+=("--kube-context=")
   495  
   496      must_have_one_flag=()
   497      must_have_one_noun=()
   498      noun_aliases=()
   499  }
   500  
   501  _helm_history()
   502  {
   503      last_command="helm_history"
   504      commands=()
   505  
   506      flags=()
   507      two_word_flags=()
   508      local_nonpersistent_flags=()
   509      flags_with_completion=()
   510      flags_completion=()
   511  
   512      flags+=("--max=")
   513      local_nonpersistent_flags+=("--max=")
   514      flags+=("--debug")
   515      flags+=("--home=")
   516      flags+=("--host=")
   517      flags+=("--kube-context=")
   518  
   519      must_have_one_flag=()
   520      must_have_one_noun=()
   521      noun_aliases=()
   522  }
   523  
   524  _helm_home()
   525  {
   526      last_command="helm_home"
   527      commands=()
   528  
   529      flags=()
   530      two_word_flags=()
   531      local_nonpersistent_flags=()
   532      flags_with_completion=()
   533      flags_completion=()
   534  
   535      flags+=("--debug")
   536      flags+=("--home=")
   537      flags+=("--host=")
   538      flags+=("--kube-context=")
   539  
   540      must_have_one_flag=()
   541      must_have_one_noun=()
   542      noun_aliases=()
   543  }
   544  
   545  _helm_init()
   546  {
   547      last_command="helm_init"
   548      commands=()
   549  
   550      flags=()
   551      two_word_flags=()
   552      local_nonpersistent_flags=()
   553      flags_with_completion=()
   554      flags_completion=()
   555  
   556      flags+=("--canary-image")
   557      local_nonpersistent_flags+=("--canary-image")
   558      flags+=("--client-only")
   559      flags+=("-c")
   560      local_nonpersistent_flags+=("--client-only")
   561      flags+=("--dry-run")
   562      local_nonpersistent_flags+=("--dry-run")
   563      flags+=("--tiller-image=")
   564      two_word_flags+=("-i")
   565      local_nonpersistent_flags+=("--tiller-image=")
   566      flags+=("--debug")
   567      flags+=("--home=")
   568      flags+=("--host=")
   569      flags+=("--kube-context=")
   570  
   571      must_have_one_flag=()
   572      must_have_one_noun=()
   573      noun_aliases=()
   574  }
   575  
   576  _helm_inspect_chart()
   577  {
   578      last_command="helm_inspect_chart"
   579      commands=()
   580  
   581      flags=()
   582      two_word_flags=()
   583      local_nonpersistent_flags=()
   584      flags_with_completion=()
   585      flags_completion=()
   586  
   587      flags+=("--keyring=")
   588      local_nonpersistent_flags+=("--keyring=")
   589      flags+=("--verify")
   590      local_nonpersistent_flags+=("--verify")
   591      flags+=("--version=")
   592      local_nonpersistent_flags+=("--version=")
   593      flags+=("--debug")
   594      flags+=("--home=")
   595      flags+=("--host=")
   596      flags+=("--kube-context=")
   597  
   598      must_have_one_flag=()
   599      must_have_one_noun=()
   600      noun_aliases=()
   601  }
   602  
   603  _helm_inspect_values()
   604  {
   605      last_command="helm_inspect_values"
   606      commands=()
   607  
   608      flags=()
   609      two_word_flags=()
   610      local_nonpersistent_flags=()
   611      flags_with_completion=()
   612      flags_completion=()
   613  
   614      flags+=("--keyring=")
   615      local_nonpersistent_flags+=("--keyring=")
   616      flags+=("--verify")
   617      local_nonpersistent_flags+=("--verify")
   618      flags+=("--version=")
   619      local_nonpersistent_flags+=("--version=")
   620      flags+=("--debug")
   621      flags+=("--home=")
   622      flags+=("--host=")
   623      flags+=("--kube-context=")
   624  
   625      must_have_one_flag=()
   626      must_have_one_noun=()
   627      noun_aliases=()
   628  }
   629  
   630  _helm_inspect()
   631  {
   632      last_command="helm_inspect"
   633      commands=()
   634      commands+=("chart")
   635      commands+=("values")
   636  
   637      flags=()
   638      two_word_flags=()
   639      local_nonpersistent_flags=()
   640      flags_with_completion=()
   641      flags_completion=()
   642  
   643      flags+=("--keyring=")
   644      local_nonpersistent_flags+=("--keyring=")
   645      flags+=("--verify")
   646      local_nonpersistent_flags+=("--verify")
   647      flags+=("--version=")
   648      local_nonpersistent_flags+=("--version=")
   649      flags+=("--debug")
   650      flags+=("--home=")
   651      flags+=("--host=")
   652      flags+=("--kube-context=")
   653  
   654      must_have_one_flag=()
   655      must_have_one_noun=()
   656      noun_aliases=()
   657  }
   658  
   659  _helm_install()
   660  {
   661      last_command="helm_install"
   662      commands=()
   663  
   664      flags=()
   665      two_word_flags=()
   666      local_nonpersistent_flags=()
   667      flags_with_completion=()
   668      flags_completion=()
   669  
   670      flags+=("--dry-run")
   671      local_nonpersistent_flags+=("--dry-run")
   672      flags+=("--keyring=")
   673      local_nonpersistent_flags+=("--keyring=")
   674      flags+=("--name=")
   675      two_word_flags+=("-n")
   676      local_nonpersistent_flags+=("--name=")
   677      flags+=("--name-template=")
   678      local_nonpersistent_flags+=("--name-template=")
   679      flags+=("--namespace=")
   680      local_nonpersistent_flags+=("--namespace=")
   681      flags+=("--no-hooks")
   682      local_nonpersistent_flags+=("--no-hooks")
   683      flags+=("--replace")
   684      local_nonpersistent_flags+=("--replace")
   685      flags+=("--set=")
   686      local_nonpersistent_flags+=("--set=")
   687      flags+=("--values=")
   688      two_word_flags+=("-f")
   689      local_nonpersistent_flags+=("--values=")
   690      flags+=("--verify")
   691      local_nonpersistent_flags+=("--verify")
   692      flags+=("--version=")
   693      local_nonpersistent_flags+=("--version=")
   694      flags+=("--debug")
   695      flags+=("--home=")
   696      flags+=("--host=")
   697      flags+=("--kube-context=")
   698  
   699      must_have_one_flag=()
   700      must_have_one_noun=()
   701      noun_aliases=()
   702  }
   703  
   704  _helm_lint()
   705  {
   706      last_command="helm_lint"
   707      commands=()
   708  
   709      flags=()
   710      two_word_flags=()
   711      local_nonpersistent_flags=()
   712      flags_with_completion=()
   713      flags_completion=()
   714  
   715      flags+=("--strict")
   716      local_nonpersistent_flags+=("--strict")
   717      flags+=("--debug")
   718      flags+=("--home=")
   719      flags+=("--host=")
   720      flags+=("--kube-context=")
   721  
   722      must_have_one_flag=()
   723      must_have_one_noun=()
   724      noun_aliases=()
   725  }
   726  
   727  _helm_list()
   728  {
   729      last_command="helm_list"
   730      commands=()
   731  
   732      flags=()
   733      two_word_flags=()
   734      local_nonpersistent_flags=()
   735      flags_with_completion=()
   736      flags_completion=()
   737  
   738      flags+=("--all")
   739      local_nonpersistent_flags+=("--all")
   740      flags+=("--date")
   741      flags+=("-d")
   742      local_nonpersistent_flags+=("--date")
   743      flags+=("--deleted")
   744      local_nonpersistent_flags+=("--deleted")
   745      flags+=("--deployed")
   746      local_nonpersistent_flags+=("--deployed")
   747      flags+=("--failed")
   748      local_nonpersistent_flags+=("--failed")
   749      flags+=("--max=")
   750      two_word_flags+=("-m")
   751      local_nonpersistent_flags+=("--max=")
   752      flags+=("--offset=")
   753      two_word_flags+=("-o")
   754      local_nonpersistent_flags+=("--offset=")
   755      flags+=("--reverse")
   756      flags+=("-r")
   757      local_nonpersistent_flags+=("--reverse")
   758      flags+=("--short")
   759      flags+=("-q")
   760      local_nonpersistent_flags+=("--short")
   761      flags+=("--debug")
   762      flags+=("--home=")
   763      flags+=("--host=")
   764      flags+=("--kube-context=")
   765  
   766      must_have_one_flag=()
   767      must_have_one_noun=()
   768      noun_aliases=()
   769  }
   770  
   771  _helm_package()
   772  {
   773      last_command="helm_package"
   774      commands=()
   775  
   776      flags=()
   777      two_word_flags=()
   778      local_nonpersistent_flags=()
   779      flags_with_completion=()
   780      flags_completion=()
   781  
   782      flags+=("--key=")
   783      local_nonpersistent_flags+=("--key=")
   784      flags+=("--keyring=")
   785      local_nonpersistent_flags+=("--keyring=")
   786      flags+=("--save")
   787      local_nonpersistent_flags+=("--save")
   788      flags+=("--sign")
   789      local_nonpersistent_flags+=("--sign")
   790      flags+=("--debug")
   791      flags+=("--home=")
   792      flags+=("--host=")
   793      flags+=("--kube-context=")
   794  
   795      must_have_one_flag=()
   796      must_have_one_noun=()
   797      noun_aliases=()
   798  }
   799  
   800  _helm_repo_add()
   801  {
   802      last_command="helm_repo_add"
   803      commands=()
   804  
   805      flags=()
   806      two_word_flags=()
   807      local_nonpersistent_flags=()
   808      flags_with_completion=()
   809      flags_completion=()
   810  
   811      flags+=("--no-update")
   812      local_nonpersistent_flags+=("--no-update")
   813      flags+=("--debug")
   814      flags+=("--home=")
   815      flags+=("--host=")
   816      flags+=("--kube-context=")
   817  
   818      must_have_one_flag=()
   819      must_have_one_noun=()
   820      noun_aliases=()
   821  }
   822  
   823  _helm_repo_index()
   824  {
   825      last_command="helm_repo_index"
   826      commands=()
   827  
   828      flags=()
   829      two_word_flags=()
   830      local_nonpersistent_flags=()
   831      flags_with_completion=()
   832      flags_completion=()
   833  
   834      flags+=("--merge=")
   835      local_nonpersistent_flags+=("--merge=")
   836      flags+=("--url=")
   837      local_nonpersistent_flags+=("--url=")
   838      flags+=("--debug")
   839      flags+=("--home=")
   840      flags+=("--host=")
   841      flags+=("--kube-context=")
   842  
   843      must_have_one_flag=()
   844      must_have_one_noun=()
   845      noun_aliases=()
   846  }
   847  
   848  _helm_repo_list()
   849  {
   850      last_command="helm_repo_list"
   851      commands=()
   852  
   853      flags=()
   854      two_word_flags=()
   855      local_nonpersistent_flags=()
   856      flags_with_completion=()
   857      flags_completion=()
   858  
   859      flags+=("--debug")
   860      flags+=("--home=")
   861      flags+=("--host=")
   862      flags+=("--kube-context=")
   863  
   864      must_have_one_flag=()
   865      must_have_one_noun=()
   866      noun_aliases=()
   867  }
   868  
   869  _helm_repo_remove()
   870  {
   871      last_command="helm_repo_remove"
   872      commands=()
   873  
   874      flags=()
   875      two_word_flags=()
   876      local_nonpersistent_flags=()
   877      flags_with_completion=()
   878      flags_completion=()
   879  
   880      flags+=("--debug")
   881      flags+=("--home=")
   882      flags+=("--host=")
   883      flags+=("--kube-context=")
   884  
   885      must_have_one_flag=()
   886      must_have_one_noun=()
   887      noun_aliases=()
   888  }
   889  
   890  _helm_repo_update()
   891  {
   892      last_command="helm_repo_update"
   893      commands=()
   894  
   895      flags=()
   896      two_word_flags=()
   897      local_nonpersistent_flags=()
   898      flags_with_completion=()
   899      flags_completion=()
   900  
   901      flags+=("--debug")
   902      flags+=("--home=")
   903      flags+=("--host=")
   904      flags+=("--kube-context=")
   905  
   906      must_have_one_flag=()
   907      must_have_one_noun=()
   908      noun_aliases=()
   909  }
   910  
   911  _helm_repo()
   912  {
   913      last_command="helm_repo"
   914      commands=()
   915      commands+=("add")
   916      commands+=("index")
   917      commands+=("list")
   918      commands+=("remove")
   919      commands+=("update")
   920  
   921      flags=()
   922      two_word_flags=()
   923      local_nonpersistent_flags=()
   924      flags_with_completion=()
   925      flags_completion=()
   926  
   927      flags+=("--debug")
   928      flags+=("--home=")
   929      flags+=("--host=")
   930      flags+=("--kube-context=")
   931  
   932      must_have_one_flag=()
   933      must_have_one_noun=()
   934      noun_aliases=()
   935  }
   936  
   937  _helm_rollback()
   938  {
   939      last_command="helm_rollback"
   940      commands=()
   941  
   942      flags=()
   943      two_word_flags=()
   944      local_nonpersistent_flags=()
   945      flags_with_completion=()
   946      flags_completion=()
   947  
   948      flags+=("--dry-run")
   949      local_nonpersistent_flags+=("--dry-run")
   950      flags+=("--no-hooks")
   951      local_nonpersistent_flags+=("--no-hooks")
   952      flags+=("--debug")
   953      flags+=("--home=")
   954      flags+=("--host=")
   955      flags+=("--kube-context=")
   956  
   957      must_have_one_flag=()
   958      must_have_one_noun=()
   959      noun_aliases=()
   960  }
   961  
   962  _helm_search()
   963  {
   964      last_command="helm_search"
   965      commands=()
   966  
   967      flags=()
   968      two_word_flags=()
   969      local_nonpersistent_flags=()
   970      flags_with_completion=()
   971      flags_completion=()
   972  
   973      flags+=("--regexp")
   974      flags+=("-r")
   975      local_nonpersistent_flags+=("--regexp")
   976      flags+=("--versions")
   977      flags+=("-l")
   978      local_nonpersistent_flags+=("--versions")
   979      flags+=("--debug")
   980      flags+=("--home=")
   981      flags+=("--host=")
   982      flags+=("--kube-context=")
   983  
   984      must_have_one_flag=()
   985      must_have_one_noun=()
   986      noun_aliases=()
   987  }
   988  
   989  _helm_serve()
   990  {
   991      last_command="helm_serve"
   992      commands=()
   993  
   994      flags=()
   995      two_word_flags=()
   996      local_nonpersistent_flags=()
   997      flags_with_completion=()
   998      flags_completion=()
   999  
  1000      flags+=("--address=")
  1001      local_nonpersistent_flags+=("--address=")
  1002      flags+=("--repo-path=")
  1003      local_nonpersistent_flags+=("--repo-path=")
  1004      flags+=("--debug")
  1005      flags+=("--home=")
  1006      flags+=("--host=")
  1007      flags+=("--kube-context=")
  1008  
  1009      must_have_one_flag=()
  1010      must_have_one_noun=()
  1011      noun_aliases=()
  1012  }
  1013  
  1014  _helm_status()
  1015  {
  1016      last_command="helm_status"
  1017      commands=()
  1018  
  1019      flags=()
  1020      two_word_flags=()
  1021      local_nonpersistent_flags=()
  1022      flags_with_completion=()
  1023      flags_completion=()
  1024  
  1025      flags+=("--revision=")
  1026      flags+=("--debug")
  1027      flags+=("--home=")
  1028      flags+=("--host=")
  1029      flags+=("--kube-context=")
  1030  
  1031      must_have_one_flag=()
  1032      must_have_one_noun=()
  1033      noun_aliases=()
  1034  }
  1035  
  1036  _helm_upgrade()
  1037  {
  1038      last_command="helm_upgrade"
  1039      commands=()
  1040  
  1041      flags=()
  1042      two_word_flags=()
  1043      local_nonpersistent_flags=()
  1044      flags_with_completion=()
  1045      flags_completion=()
  1046  
  1047      flags+=("--disable-hooks")
  1048      local_nonpersistent_flags+=("--disable-hooks")
  1049      flags+=("--dry-run")
  1050      local_nonpersistent_flags+=("--dry-run")
  1051      flags+=("--install")
  1052      flags+=("-i")
  1053      local_nonpersistent_flags+=("--install")
  1054      flags+=("--keyring=")
  1055      local_nonpersistent_flags+=("--keyring=")
  1056      flags+=("--namespace=")
  1057      local_nonpersistent_flags+=("--namespace=")
  1058      flags+=("--set=")
  1059      local_nonpersistent_flags+=("--set=")
  1060      flags+=("--values=")
  1061      two_word_flags+=("-f")
  1062      local_nonpersistent_flags+=("--values=")
  1063      flags+=("--verify")
  1064      local_nonpersistent_flags+=("--verify")
  1065      flags+=("--version=")
  1066      local_nonpersistent_flags+=("--version=")
  1067      flags+=("--debug")
  1068      flags+=("--home=")
  1069      flags+=("--host=")
  1070      flags+=("--kube-context=")
  1071  
  1072      must_have_one_flag=()
  1073      must_have_one_noun=()
  1074      noun_aliases=()
  1075  }
  1076  
  1077  _helm_verify()
  1078  {
  1079      last_command="helm_verify"
  1080      commands=()
  1081  
  1082      flags=()
  1083      two_word_flags=()
  1084      local_nonpersistent_flags=()
  1085      flags_with_completion=()
  1086      flags_completion=()
  1087  
  1088      flags+=("--keyring=")
  1089      local_nonpersistent_flags+=("--keyring=")
  1090      flags+=("--debug")
  1091      flags+=("--home=")
  1092      flags+=("--host=")
  1093      flags+=("--kube-context=")
  1094  
  1095      must_have_one_flag=()
  1096      must_have_one_noun=()
  1097      noun_aliases=()
  1098  }
  1099  
  1100  _helm_version()
  1101  {
  1102      last_command="helm_version"
  1103      commands=()
  1104  
  1105      flags=()
  1106      two_word_flags=()
  1107      local_nonpersistent_flags=()
  1108      flags_with_completion=()
  1109      flags_completion=()
  1110  
  1111      flags+=("--client")
  1112      flags+=("-c")
  1113      local_nonpersistent_flags+=("--client")
  1114      flags+=("--server")
  1115      flags+=("-s")
  1116      local_nonpersistent_flags+=("--server")
  1117      flags+=("--debug")
  1118      flags+=("--home=")
  1119      flags+=("--host=")
  1120      flags+=("--kube-context=")
  1121  
  1122      must_have_one_flag=()
  1123      must_have_one_noun=()
  1124      noun_aliases=()
  1125  }
  1126  
  1127  _helm()
  1128  {
  1129      last_command="helm"
  1130      commands=()
  1131      commands+=("create")
  1132      commands+=("delete")
  1133      commands+=("dependency")
  1134      commands+=("fetch")
  1135      commands+=("get")
  1136      commands+=("history")
  1137      commands+=("home")
  1138      commands+=("init")
  1139      commands+=("inspect")
  1140      commands+=("install")
  1141      commands+=("lint")
  1142      commands+=("list")
  1143      commands+=("package")
  1144      commands+=("repo")
  1145      commands+=("rollback")
  1146      commands+=("search")
  1147      commands+=("serve")
  1148      commands+=("status")
  1149      commands+=("upgrade")
  1150      commands+=("verify")
  1151      commands+=("version")
  1152  
  1153      flags=()
  1154      two_word_flags=()
  1155      local_nonpersistent_flags=()
  1156      flags_with_completion=()
  1157      flags_completion=()
  1158  
  1159      flags+=("--debug")
  1160      flags+=("--home=")
  1161      flags+=("--host=")
  1162      flags+=("--kube-context=")
  1163  
  1164      must_have_one_flag=()
  1165      must_have_one_noun=()
  1166      noun_aliases=()
  1167  }
  1168  
  1169  __start_helm()
  1170  {
  1171      local cur prev words cword
  1172      declare -A flaghash 2>/dev/null || :
  1173      if declare -F _init_completion >/dev/null 2>&1; then
  1174          _init_completion -s || return
  1175      else
  1176          __my_init_completion -n "=" || return
  1177      fi
  1178  
  1179      local c=0
  1180      local flags=()
  1181      local two_word_flags=()
  1182      local local_nonpersistent_flags=()
  1183      local flags_with_completion=()
  1184      local flags_completion=()
  1185      local commands=("helm")
  1186      local must_have_one_flag=()
  1187      local must_have_one_noun=()
  1188      local last_command
  1189      local nouns=()
  1190  
  1191      __handle_word
  1192  }
  1193  
  1194  if [[ $(type -t compopt) = "builtin" ]]; then
  1195      complete -o default -F __start_helm helm
  1196  else
  1197      complete -o default -o nospace -F __start_helm helm
  1198  fi
  1199  
  1200  # ex: ts=4 sw=4 et filetype=sh