github.com/clusterize-io/tusk@v0.6.3-0.20211001020217-cfe8a8cd0d4a/appcli/completion/_tusk (about)

     1  #compdef tusk
     2  
     3  local meta end
     4  local -a _words _options
     5  
     6  let end=$CURRENT-1
     7  IFS=$'\n' _words=( $(${words[@]:0:$end} --generate-bash-completion) )
     8  
     9  # Split words into completion type and options
    10  meta="${_words[1]}"
    11  _options=( "${_words[@]:1}" )
    12  
    13  __tusk_tasks() {
    14      local -a tasks
    15      for option in "${_options[@]}"; do
    16          if [[ ! "${option}" = --* ]]; then
    17              tasks+=("${option}")
    18          fi
    19      done
    20      _describe -t tasks 'tasks' tasks
    21  }
    22  
    23  __tusk_task_args() {
    24      local -a args
    25      for option in "${_options[@]}"; do
    26          if [[ "${option}" != --* ]]; then
    27              args+=("${option}")
    28          fi
    29      done
    30      if [[ ${#args} == 0 ]]; then
    31          _files
    32      else
    33          _describe -t task-args 'task arguments' args
    34      fi
    35  }
    36  
    37  __tusk_task_flags() {
    38      local -a flags
    39      for option in "${_options[@]}"; do
    40          if [[ "${option}" = --* ]]; then
    41              flags+=("${option}")
    42          fi
    43      done
    44      _describe -t task-flags 'task options' flags
    45  }
    46  
    47  __tusk_global_flags() {
    48      local -a flags
    49      for option in "${_options[@]}"; do
    50          if [[ "${option}" = --* ]]; then
    51              flags+=("${option}")
    52          fi
    53      done
    54      _describe -t global-flags 'global options' flags
    55  }
    56  
    57  __tusk_values() {
    58      local -a values
    59      for option in "${_options[@]}"; do
    60          if [[ ! "${option}" = --* ]]; then
    61              values+=("${option}")
    62          fi
    63      done
    64      _describe -t values 'values' values
    65  }
    66  
    67  case "${meta}" in
    68      "normal")
    69          _alternative \
    70              'tasks:task:__tusk_tasks' \
    71              'global-flags:flag:__tusk_global_flags'
    72          ;;
    73      "task-args")
    74          _alternative \
    75              'task-args:arg:__tusk_task_args' \
    76              'task-flags:flag:__tusk_task_flags'
    77          ;;
    78      "task-no-args")
    79          _alternative \
    80              'task-flags:flag:__tusk_task_flags'
    81          ;;
    82      "value")
    83          _alternative \
    84              'values:value:__tusk_values'
    85          ;;
    86      "file")
    87          _files
    88          ;;
    89  esac