Zsh completion basics
From wikinotes
File Format
# compdef backup_user # <-- program(s) to complete _arguments \ '1:firstname:_normal' \ # <-- positional param 1 '2:file:_normal' # <-- positional param 2 {-h,--help}'[show help]' \ # <-- flag param (no value) '-o[output file]::outfile:_files' \ # <-- flag param (with 'file' value)