#compdef do.sh _endurance() { list-commands () { grep '^[[:blank:]]*".*"[[:blank:]]*)' do.sh | tr '")\t|\n' ' ' | tr -s ' ' } list-tests () { echo all find /mnt/endurancetesting/ -mindepth 1 -maxdepth 1 -type d ! -name '.*' | cut -d'/' -f4 } list-nodes () { < /mnt/endurancetesting/planning awk '!/^#|^$/ { if ( ! seen[$1] ) { seen[$1]=1 ; print $1 } }' } case "$service" in do.sh) _arguments \ ':actions:(( $(list-commands) ))' \ ':tests:(( $(list-tests) ))' \ ':nodes:(( $(list-nodes) ))' _alternative \ '*:files: _files' ;; esac }