github.com/projectriff/riff-cli@v0.0.5-0.20180301104501-5db7a3bd9fc1/etc/bash/riff (about)

     1  # bash completion for riff                                 -*- 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                  COMPREPLY=()
    68                  if [[ ${index} -ge 0 ]]; then
    69                      PREFIX=""
    70                      cur="${cur#*=}"
    71                      ${flags_completion[${index}]}
    72                      if [ -n "${ZSH_VERSION}" ]; then
    73                          # zsh 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      # available in bash-completion >= 2, not always present on macOS
   114      if declare -F __ltrim_colon_completions >/dev/null; then
   115          __ltrim_colon_completions "$cur"
   116      fi
   117  }
   118  
   119  # The arguments should be in the form "ext1|ext2|extn"
   120  __handle_filename_extension_flag()
   121  {
   122      local ext="$1"
   123      _filedir "@(${ext})"
   124  }
   125  
   126  __handle_subdirs_in_dir_flag()
   127  {
   128      local dir="$1"
   129      pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1
   130  }
   131  
   132  __handle_flag()
   133  {
   134      __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
   135  
   136      # if a command required a flag, and we found it, unset must_have_one_flag()
   137      local flagname=${words[c]}
   138      local flagvalue
   139      # if the word contained an =
   140      if [[ ${words[c]} == *"="* ]]; then
   141          flagvalue=${flagname#*=} # take in as flagvalue after the =
   142          flagname=${flagname%%=*} # strip everything after the =
   143          flagname="${flagname}=" # but put the = back
   144      fi
   145      __debug "${FUNCNAME[0]}: looking for ${flagname}"
   146      if __contains_word "${flagname}" "${must_have_one_flag[@]}"; then
   147          must_have_one_flag=()
   148      fi
   149  
   150      # if you set a flag which only applies to this command, don't show subcommands
   151      if __contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then
   152        commands=()
   153      fi
   154  
   155      # keep flag value with flagname as flaghash
   156      if [ -n "${flagvalue}" ] ; then
   157          flaghash[${flagname}]=${flagvalue}
   158      elif [ -n "${words[ $((c+1)) ]}" ] ; then
   159          flaghash[${flagname}]=${words[ $((c+1)) ]}
   160      else
   161          flaghash[${flagname}]="true" # pad "true" for bool flag
   162      fi
   163  
   164      # skip the argument to a two word flag
   165      if __contains_word "${words[c]}" "${two_word_flags[@]}"; then
   166          c=$((c+1))
   167          # if we are looking for a flags value, don't show commands
   168          if [[ $c -eq $cword ]]; then
   169              commands=()
   170          fi
   171      fi
   172  
   173      c=$((c+1))
   174  
   175  }
   176  
   177  __handle_noun()
   178  {
   179      __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
   180  
   181      if __contains_word "${words[c]}" "${must_have_one_noun[@]}"; then
   182          must_have_one_noun=()
   183      elif __contains_word "${words[c]}" "${noun_aliases[@]}"; then
   184          must_have_one_noun=()
   185      fi
   186  
   187      nouns+=("${words[c]}")
   188      c=$((c+1))
   189  }
   190  
   191  __handle_command()
   192  {
   193      __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
   194  
   195      local next_command
   196      if [[ -n ${last_command} ]]; then
   197          next_command="_${last_command}_${words[c]//:/__}"
   198      else
   199          if [[ $c -eq 0 ]]; then
   200              next_command="_$(basename "${words[c]//:/__}")"
   201          else
   202              next_command="_${words[c]//:/__}"
   203          fi
   204      fi
   205      c=$((c+1))
   206      __debug "${FUNCNAME[0]}: looking for ${next_command}"
   207      declare -F "$next_command" >/dev/null && $next_command
   208  }
   209  
   210  __handle_word()
   211  {
   212      if [[ $c -ge $cword ]]; then
   213          __handle_reply
   214          return
   215      fi
   216      __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
   217      if [[ "${words[c]}" == -* ]]; then
   218          __handle_flag
   219      elif __contains_word "${words[c]}" "${commands[@]}"; then
   220          __handle_command
   221      elif [[ $c -eq 0 ]] && __contains_word "$(basename "${words[c]}")" "${commands[@]}"; then
   222          __handle_command
   223      else
   224          __handle_noun
   225      fi
   226      __handle_word
   227  }
   228  
   229  _riff_apply()
   230  {
   231      last_command="riff_apply"
   232      commands=()
   233  
   234      flags=()
   235      two_word_flags=()
   236      local_nonpersistent_flags=()
   237      flags_with_completion=()
   238      flags_completion=()
   239  
   240      flags+=("--dry-run")
   241      local_nonpersistent_flags+=("--dry-run")
   242      flags+=("--filepath=")
   243      two_word_flags+=("-f")
   244      local_nonpersistent_flags+=("--filepath=")
   245      flags+=("--namespace=")
   246      local_nonpersistent_flags+=("--namespace=")
   247      flags+=("--config=")
   248  
   249      must_have_one_flag=()
   250      must_have_one_noun=()
   251      noun_aliases=()
   252  }
   253  
   254  _riff_build()
   255  {
   256      last_command="riff_build"
   257      commands=()
   258  
   259      flags=()
   260      two_word_flags=()
   261      local_nonpersistent_flags=()
   262      flags_with_completion=()
   263      flags_completion=()
   264  
   265      flags+=("--dry-run")
   266      local_nonpersistent_flags+=("--dry-run")
   267      flags+=("--filepath=")
   268      two_word_flags+=("-f")
   269      local_nonpersistent_flags+=("--filepath=")
   270      flags+=("--name=")
   271      two_word_flags+=("-n")
   272      local_nonpersistent_flags+=("--name=")
   273      flags+=("--push")
   274      local_nonpersistent_flags+=("--push")
   275      flags+=("--riff-version=")
   276      local_nonpersistent_flags+=("--riff-version=")
   277      flags+=("--useraccount=")
   278      two_word_flags+=("-u")
   279      local_nonpersistent_flags+=("--useraccount=")
   280      flags+=("--version=")
   281      two_word_flags+=("-v")
   282      local_nonpersistent_flags+=("--version=")
   283      flags+=("--config=")
   284  
   285      must_have_one_flag=()
   286      must_have_one_noun=()
   287      noun_aliases=()
   288  }
   289  
   290  _riff_create_java()
   291  {
   292      last_command="riff_create_java"
   293      commands=()
   294  
   295      flags=()
   296      two_word_flags=()
   297      local_nonpersistent_flags=()
   298      flags_with_completion=()
   299      flags_completion=()
   300  
   301      flags+=("--handler=")
   302      local_nonpersistent_flags+=("--handler=")
   303      flags+=("--artifact=")
   304      two_word_flags+=("-a")
   305      flags+=("--config=")
   306      flags+=("--dry-run")
   307      flags+=("--filepath=")
   308      two_word_flags+=("-f")
   309      flags+=("--force")
   310      flags+=("--input=")
   311      two_word_flags+=("-i")
   312      flags+=("--name=")
   313      two_word_flags+=("-n")
   314      flags+=("--namespace=")
   315      flags+=("--output=")
   316      two_word_flags+=("-o")
   317      flags+=("--protocol=")
   318      two_word_flags+=("-p")
   319      flags+=("--push")
   320      flags+=("--riff-version=")
   321      flags+=("--useraccount=")
   322      two_word_flags+=("-u")
   323      flags+=("--version=")
   324      two_word_flags+=("-v")
   325  
   326      must_have_one_flag=()
   327      must_have_one_flag+=("--handler=")
   328      must_have_one_noun=()
   329      noun_aliases=()
   330  }
   331  
   332  _riff_create_js()
   333  {
   334      last_command="riff_create_js"
   335      commands=()
   336  
   337      flags=()
   338      two_word_flags=()
   339      local_nonpersistent_flags=()
   340      flags_with_completion=()
   341      flags_completion=()
   342  
   343      flags+=("--artifact=")
   344      two_word_flags+=("-a")
   345      flags+=("--config=")
   346      flags+=("--dry-run")
   347      flags+=("--filepath=")
   348      two_word_flags+=("-f")
   349      flags+=("--force")
   350      flags+=("--input=")
   351      two_word_flags+=("-i")
   352      flags+=("--name=")
   353      two_word_flags+=("-n")
   354      flags+=("--namespace=")
   355      flags+=("--output=")
   356      two_word_flags+=("-o")
   357      flags+=("--protocol=")
   358      two_word_flags+=("-p")
   359      flags+=("--push")
   360      flags+=("--riff-version=")
   361      flags+=("--useraccount=")
   362      two_word_flags+=("-u")
   363      flags+=("--version=")
   364      two_word_flags+=("-v")
   365  
   366      must_have_one_flag=()
   367      must_have_one_noun=()
   368      noun_aliases=()
   369  }
   370  
   371  _riff_create_node()
   372  {
   373      last_command="riff_create_node"
   374      commands=()
   375  
   376      flags=()
   377      two_word_flags=()
   378      local_nonpersistent_flags=()
   379      flags_with_completion=()
   380      flags_completion=()
   381  
   382      flags+=("--artifact=")
   383      two_word_flags+=("-a")
   384      flags+=("--config=")
   385      flags+=("--dry-run")
   386      flags+=("--filepath=")
   387      two_word_flags+=("-f")
   388      flags+=("--force")
   389      flags+=("--input=")
   390      two_word_flags+=("-i")
   391      flags+=("--name=")
   392      two_word_flags+=("-n")
   393      flags+=("--namespace=")
   394      flags+=("--output=")
   395      two_word_flags+=("-o")
   396      flags+=("--protocol=")
   397      two_word_flags+=("-p")
   398      flags+=("--push")
   399      flags+=("--riff-version=")
   400      flags+=("--useraccount=")
   401      two_word_flags+=("-u")
   402      flags+=("--version=")
   403      two_word_flags+=("-v")
   404  
   405      must_have_one_flag=()
   406      must_have_one_noun=()
   407      noun_aliases=()
   408  }
   409  
   410  _riff_create_python()
   411  {
   412      last_command="riff_create_python"
   413      commands=()
   414  
   415      flags=()
   416      two_word_flags=()
   417      local_nonpersistent_flags=()
   418      flags_with_completion=()
   419      flags_completion=()
   420  
   421      flags+=("--handler=")
   422      local_nonpersistent_flags+=("--handler=")
   423      flags+=("--artifact=")
   424      two_word_flags+=("-a")
   425      flags+=("--config=")
   426      flags+=("--dry-run")
   427      flags+=("--filepath=")
   428      two_word_flags+=("-f")
   429      flags+=("--force")
   430      flags+=("--input=")
   431      two_word_flags+=("-i")
   432      flags+=("--name=")
   433      two_word_flags+=("-n")
   434      flags+=("--namespace=")
   435      flags+=("--output=")
   436      two_word_flags+=("-o")
   437      flags+=("--protocol=")
   438      two_word_flags+=("-p")
   439      flags+=("--push")
   440      flags+=("--riff-version=")
   441      flags+=("--useraccount=")
   442      two_word_flags+=("-u")
   443      flags+=("--version=")
   444      two_word_flags+=("-v")
   445  
   446      must_have_one_flag=()
   447      must_have_one_flag+=("--handler=")
   448      must_have_one_noun=()
   449      noun_aliases=()
   450  }
   451  
   452  _riff_create_shell()
   453  {
   454      last_command="riff_create_shell"
   455      commands=()
   456  
   457      flags=()
   458      two_word_flags=()
   459      local_nonpersistent_flags=()
   460      flags_with_completion=()
   461      flags_completion=()
   462  
   463      flags+=("--artifact=")
   464      two_word_flags+=("-a")
   465      flags+=("--config=")
   466      flags+=("--dry-run")
   467      flags+=("--filepath=")
   468      two_word_flags+=("-f")
   469      flags+=("--force")
   470      flags+=("--input=")
   471      two_word_flags+=("-i")
   472      flags+=("--name=")
   473      two_word_flags+=("-n")
   474      flags+=("--namespace=")
   475      flags+=("--output=")
   476      two_word_flags+=("-o")
   477      flags+=("--protocol=")
   478      two_word_flags+=("-p")
   479      flags+=("--push")
   480      flags+=("--riff-version=")
   481      flags+=("--useraccount=")
   482      two_word_flags+=("-u")
   483      flags+=("--version=")
   484      two_word_flags+=("-v")
   485  
   486      must_have_one_flag=()
   487      must_have_one_noun=()
   488      noun_aliases=()
   489  }
   490  
   491  _riff_create()
   492  {
   493      last_command="riff_create"
   494      commands=()
   495      commands+=("java")
   496      commands+=("js")
   497      commands+=("node")
   498      commands+=("python")
   499      commands+=("shell")
   500  
   501      flags=()
   502      two_word_flags=()
   503      local_nonpersistent_flags=()
   504      flags_with_completion=()
   505      flags_completion=()
   506  
   507      flags+=("--artifact=")
   508      two_word_flags+=("-a")
   509      flags+=("--dry-run")
   510      flags+=("--filepath=")
   511      two_word_flags+=("-f")
   512      flags+=("--force")
   513      flags+=("--input=")
   514      two_word_flags+=("-i")
   515      flags+=("--name=")
   516      two_word_flags+=("-n")
   517      flags+=("--namespace=")
   518      flags+=("--output=")
   519      two_word_flags+=("-o")
   520      flags+=("--protocol=")
   521      two_word_flags+=("-p")
   522      flags+=("--push")
   523      flags+=("--riff-version=")
   524      flags+=("--useraccount=")
   525      two_word_flags+=("-u")
   526      flags+=("--version=")
   527      two_word_flags+=("-v")
   528      flags+=("--config=")
   529  
   530      must_have_one_flag=()
   531      must_have_one_noun=()
   532      noun_aliases=()
   533  }
   534  
   535  _riff_delete()
   536  {
   537      last_command="riff_delete"
   538      commands=()
   539  
   540      flags=()
   541      two_word_flags=()
   542      local_nonpersistent_flags=()
   543      flags_with_completion=()
   544      flags_completion=()
   545  
   546      flags+=("--all")
   547      local_nonpersistent_flags+=("--all")
   548      flags+=("--dry-run")
   549      local_nonpersistent_flags+=("--dry-run")
   550      flags+=("--filepath=")
   551      two_word_flags+=("-f")
   552      local_nonpersistent_flags+=("--filepath=")
   553      flags+=("--name=")
   554      two_word_flags+=("-n")
   555      local_nonpersistent_flags+=("--name=")
   556      flags+=("--namespace=")
   557      local_nonpersistent_flags+=("--namespace=")
   558      flags+=("--config=")
   559  
   560      must_have_one_flag=()
   561      must_have_one_noun=()
   562      noun_aliases=()
   563  }
   564  
   565  _riff_init_java()
   566  {
   567      last_command="riff_init_java"
   568      commands=()
   569  
   570      flags=()
   571      two_word_flags=()
   572      local_nonpersistent_flags=()
   573      flags_with_completion=()
   574      flags_completion=()
   575  
   576      flags+=("--handler=")
   577      local_nonpersistent_flags+=("--handler=")
   578      flags+=("--artifact=")
   579      two_word_flags+=("-a")
   580      flags+=("--config=")
   581      flags+=("--dry-run")
   582      flags+=("--filepath=")
   583      two_word_flags+=("-f")
   584      flags+=("--force")
   585      flags+=("--input=")
   586      two_word_flags+=("-i")
   587      flags+=("--name=")
   588      two_word_flags+=("-n")
   589      flags+=("--output=")
   590      two_word_flags+=("-o")
   591      flags+=("--protocol=")
   592      two_word_flags+=("-p")
   593      flags+=("--riff-version=")
   594      flags+=("--useraccount=")
   595      two_word_flags+=("-u")
   596      flags+=("--version=")
   597      two_word_flags+=("-v")
   598  
   599      must_have_one_flag=()
   600      must_have_one_flag+=("--handler=")
   601      must_have_one_noun=()
   602      noun_aliases=()
   603  }
   604  
   605  _riff_init_node()
   606  {
   607      last_command="riff_init_node"
   608      commands=()
   609  
   610      flags=()
   611      two_word_flags=()
   612      local_nonpersistent_flags=()
   613      flags_with_completion=()
   614      flags_completion=()
   615  
   616      flags+=("--artifact=")
   617      two_word_flags+=("-a")
   618      flags+=("--config=")
   619      flags+=("--dry-run")
   620      flags+=("--filepath=")
   621      two_word_flags+=("-f")
   622      flags+=("--force")
   623      flags+=("--input=")
   624      two_word_flags+=("-i")
   625      flags+=("--name=")
   626      two_word_flags+=("-n")
   627      flags+=("--output=")
   628      two_word_flags+=("-o")
   629      flags+=("--protocol=")
   630      two_word_flags+=("-p")
   631      flags+=("--riff-version=")
   632      flags+=("--useraccount=")
   633      two_word_flags+=("-u")
   634      flags+=("--version=")
   635      two_word_flags+=("-v")
   636  
   637      must_have_one_flag=()
   638      must_have_one_noun=()
   639      noun_aliases=()
   640  }
   641  
   642  _riff_init_python()
   643  {
   644      last_command="riff_init_python"
   645      commands=()
   646  
   647      flags=()
   648      two_word_flags=()
   649      local_nonpersistent_flags=()
   650      flags_with_completion=()
   651      flags_completion=()
   652  
   653      flags+=("--handler=")
   654      local_nonpersistent_flags+=("--handler=")
   655      flags+=("--artifact=")
   656      two_word_flags+=("-a")
   657      flags+=("--config=")
   658      flags+=("--dry-run")
   659      flags+=("--filepath=")
   660      two_word_flags+=("-f")
   661      flags+=("--force")
   662      flags+=("--input=")
   663      two_word_flags+=("-i")
   664      flags+=("--name=")
   665      two_word_flags+=("-n")
   666      flags+=("--output=")
   667      two_word_flags+=("-o")
   668      flags+=("--protocol=")
   669      two_word_flags+=("-p")
   670      flags+=("--riff-version=")
   671      flags+=("--useraccount=")
   672      two_word_flags+=("-u")
   673      flags+=("--version=")
   674      two_word_flags+=("-v")
   675  
   676      must_have_one_flag=()
   677      must_have_one_flag+=("--handler=")
   678      must_have_one_noun=()
   679      noun_aliases=()
   680  }
   681  
   682  _riff_init_shell()
   683  {
   684      last_command="riff_init_shell"
   685      commands=()
   686  
   687      flags=()
   688      two_word_flags=()
   689      local_nonpersistent_flags=()
   690      flags_with_completion=()
   691      flags_completion=()
   692  
   693      flags+=("--artifact=")
   694      two_word_flags+=("-a")
   695      flags+=("--config=")
   696      flags+=("--dry-run")
   697      flags+=("--filepath=")
   698      two_word_flags+=("-f")
   699      flags+=("--force")
   700      flags+=("--input=")
   701      two_word_flags+=("-i")
   702      flags+=("--name=")
   703      two_word_flags+=("-n")
   704      flags+=("--output=")
   705      two_word_flags+=("-o")
   706      flags+=("--protocol=")
   707      two_word_flags+=("-p")
   708      flags+=("--riff-version=")
   709      flags+=("--useraccount=")
   710      two_word_flags+=("-u")
   711      flags+=("--version=")
   712      two_word_flags+=("-v")
   713  
   714      must_have_one_flag=()
   715      must_have_one_noun=()
   716      noun_aliases=()
   717  }
   718  
   719  _riff_init()
   720  {
   721      last_command="riff_init"
   722      commands=()
   723      commands+=("java")
   724      commands+=("node")
   725      commands+=("python")
   726      commands+=("shell")
   727  
   728      flags=()
   729      two_word_flags=()
   730      local_nonpersistent_flags=()
   731      flags_with_completion=()
   732      flags_completion=()
   733  
   734      flags+=("--artifact=")
   735      two_word_flags+=("-a")
   736      flags+=("--dry-run")
   737      flags+=("--filepath=")
   738      two_word_flags+=("-f")
   739      flags+=("--force")
   740      flags+=("--input=")
   741      two_word_flags+=("-i")
   742      flags+=("--name=")
   743      two_word_flags+=("-n")
   744      flags+=("--output=")
   745      two_word_flags+=("-o")
   746      flags+=("--protocol=")
   747      two_word_flags+=("-p")
   748      flags+=("--riff-version=")
   749      flags+=("--useraccount=")
   750      two_word_flags+=("-u")
   751      flags+=("--version=")
   752      two_word_flags+=("-v")
   753      flags+=("--config=")
   754  
   755      must_have_one_flag=()
   756      must_have_one_noun=()
   757      noun_aliases=()
   758  }
   759  
   760  _riff_list()
   761  {
   762      last_command="riff_list"
   763      commands=()
   764  
   765      flags=()
   766      two_word_flags=()
   767      local_nonpersistent_flags=()
   768      flags_with_completion=()
   769      flags_completion=()
   770  
   771      flags+=("--namespace=")
   772      local_nonpersistent_flags+=("--namespace=")
   773      flags+=("--config=")
   774  
   775      must_have_one_flag=()
   776      must_have_one_noun=()
   777      noun_aliases=()
   778  }
   779  
   780  _riff_logs()
   781  {
   782      last_command="riff_logs"
   783      commands=()
   784  
   785      flags=()
   786      two_word_flags=()
   787      local_nonpersistent_flags=()
   788      flags_with_completion=()
   789      flags_completion=()
   790  
   791      flags+=("--container=")
   792      two_word_flags+=("-c")
   793      local_nonpersistent_flags+=("--container=")
   794      flags+=("--name=")
   795      two_word_flags+=("-n")
   796      local_nonpersistent_flags+=("--name=")
   797      flags+=("--namespace=")
   798      local_nonpersistent_flags+=("--namespace=")
   799      flags+=("--tail")
   800      flags+=("-t")
   801      local_nonpersistent_flags+=("--tail")
   802      flags+=("--config=")
   803  
   804      must_have_one_flag=()
   805      must_have_one_flag+=("--name=")
   806      must_have_one_flag+=("-n")
   807      must_have_one_noun=()
   808      noun_aliases=()
   809  }
   810  
   811  _riff_publish()
   812  {
   813      last_command="riff_publish"
   814      commands=()
   815  
   816      flags=()
   817      two_word_flags=()
   818      local_nonpersistent_flags=()
   819      flags_with_completion=()
   820      flags_completion=()
   821  
   822      flags+=("--count=")
   823      two_word_flags+=("-c")
   824      local_nonpersistent_flags+=("--count=")
   825      flags+=("--data=")
   826      two_word_flags+=("-d")
   827      local_nonpersistent_flags+=("--data=")
   828      flags+=("--input=")
   829      two_word_flags+=("-i")
   830      local_nonpersistent_flags+=("--input=")
   831      flags+=("--namespace=")
   832      local_nonpersistent_flags+=("--namespace=")
   833      flags+=("--pause=")
   834      two_word_flags+=("-p")
   835      local_nonpersistent_flags+=("--pause=")
   836      flags+=("--reply")
   837      flags+=("-r")
   838      local_nonpersistent_flags+=("--reply")
   839      flags+=("--config=")
   840  
   841      must_have_one_flag=()
   842      must_have_one_flag+=("--data=")
   843      must_have_one_flag+=("-d")
   844      must_have_one_noun=()
   845      noun_aliases=()
   846  }
   847  
   848  _riff_update()
   849  {
   850      last_command="riff_update"
   851      commands=()
   852  
   853      flags=()
   854      two_word_flags=()
   855      local_nonpersistent_flags=()
   856      flags_with_completion=()
   857      flags_completion=()
   858  
   859      flags+=("--dry-run")
   860      flags+=("--filepath=")
   861      two_word_flags+=("-f")
   862      flags+=("--name=")
   863      two_word_flags+=("-n")
   864      flags+=("--namespace=")
   865      flags+=("--push")
   866      flags+=("--riff-version=")
   867      flags+=("--useraccount=")
   868      two_word_flags+=("-u")
   869      flags+=("--version=")
   870      two_word_flags+=("-v")
   871      flags+=("--config=")
   872  
   873      must_have_one_flag=()
   874      must_have_one_noun=()
   875      noun_aliases=()
   876  }
   877  
   878  _riff_version()
   879  {
   880      last_command="riff_version"
   881      commands=()
   882  
   883      flags=()
   884      two_word_flags=()
   885      local_nonpersistent_flags=()
   886      flags_with_completion=()
   887      flags_completion=()
   888  
   889      flags+=("--config=")
   890  
   891      must_have_one_flag=()
   892      must_have_one_noun=()
   893      noun_aliases=()
   894  }
   895  
   896  _riff()
   897  {
   898      last_command="riff"
   899      commands=()
   900      commands+=("apply")
   901      commands+=("build")
   902      commands+=("create")
   903      commands+=("delete")
   904      commands+=("init")
   905      commands+=("list")
   906      commands+=("logs")
   907      commands+=("publish")
   908      commands+=("update")
   909      commands+=("version")
   910  
   911      flags=()
   912      two_word_flags=()
   913      local_nonpersistent_flags=()
   914      flags_with_completion=()
   915      flags_completion=()
   916  
   917      flags+=("--config=")
   918  
   919      must_have_one_flag=()
   920      must_have_one_noun=()
   921      noun_aliases=()
   922  }
   923  
   924  __start_riff()
   925  {
   926      local cur prev words cword
   927      declare -A flaghash 2>/dev/null || :
   928      if declare -F _init_completion >/dev/null 2>&1; then
   929          _init_completion -s || return
   930      else
   931          __my_init_completion -n "=" || return
   932      fi
   933  
   934      local c=0
   935      local flags=()
   936      local two_word_flags=()
   937      local local_nonpersistent_flags=()
   938      local flags_with_completion=()
   939      local flags_completion=()
   940      local commands=("riff")
   941      local must_have_one_flag=()
   942      local must_have_one_noun=()
   943      local last_command
   944      local nouns=()
   945  
   946      __handle_word
   947  }
   948  
   949  if [[ $(type -t compopt) = "builtin" ]]; then
   950      complete -o default -F __start_riff riff
   951  else
   952      complete -o default -o nospace -F __start_riff riff
   953  fi
   954  
   955  # ex: ts=4 sw=4 et filetype=sh