#compdef program compdef _program program # Replace all occurences of "program" in this file with the actual name of your # CLI program. We recommend using Find+Replace feature of your editor. Let's say # your CLI program is called "acme", then replace like so: # * program => acme # * _program => _acme _program() { local -a opts local cur cur=${words[-1]} if [[ "$cur" == "-"* ]]; then opts=("${(@f)$(${words[@]:0:#words[@]-1} ${cur} --generate-shell-completion)}") else opts=("${(@f)$(${words[@]:0:#words[@]-1} --generate-shell-completion)}") fi if [[ "${opts[1]}" != "" ]]; then _describe 'values' opts else _files fi } # don't run the completion function when being source-ed or eval-ed if [ "$funcstack[1]" = "_program" ]; then _program fi