github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/internal/fs/completion/zsh.template (about)

     1  #compdef _choria choria
     2  
     3  zstyle ':completion::complete:choria-*' menu select=2
     4  
     5  _choria() {
     6    local command=${words[2]}
     7  
     8    if [ "$command" = "req" ] || [ "$command" = "rpc" ]; then
     9      curcontext="${curcontext%:*:*}:choria-${command}"
    10  
    11      local -a clist
    12  
    13      if (( CURRENT == 3 )); then
    14        _call_program choria-list-agents choria completion --zsh --list agents | while read -A hline; do
    15          clist=($clist "${hline}")
    16        done
    17  
    18        _describe -t choria-agents "Choria Agents" clist
    19      elif (( CURRENT == 4 )); then
    20        _call_program choria-list-actions choria completion --zsh --list actions --agent=${words[3]} | while read -A hline; do
    21          clist=($clist "${hline}")
    22        done
    23  
    24        _describe -t choria-actions "${words[3]} Actions" clist
    25  
    26      elif (( CURRENT > 4 )); then
    27        _call_program choria-list-inputs choria completion --zsh --list inputs --action=${words[4]} --agent=${words[3]} | while read hline; do
    28          clist=($clist $hline)
    29        done
    30  
    31        _describe -t choria-inputs "${words[4]} Inputs" clist -S =
    32      fi
    33  
    34    else
    35      local -a cmdlist
    36  
    37      _call_program choria-list-commands choria --completion-bash "${words[@]:1:$CURRENT}" | xargs -n 1 echo | while read -A hline; do
    38        cmdlist=($cmdlist "${hline}")
    39      done
    40  
    41      curcontext="${curcontext%:*:*}:choria-commands"
    42  
    43      _describe -t choria-commands 'Choria Commands' cmdlist
    44    fi
    45  }