#compdef git-bug _arguments \ '1: :->level1' \ '2: :->level2' \ '3: :_files' case $state in level1) case $words[1] in git-bug) _arguments '1: :(add commands comment label ls pull push show status termui title webui)' ;; *) _arguments '*: :_files' ;; esac ;; level2) case $words[2] in comment) _arguments '2: :(add)' ;; label) _arguments '2: :(add rm)' ;; status) _arguments '2: :(close open)' ;; title) _arguments '2: :(edit)' ;; *) _arguments '*: :_files' ;; esac ;; *) _arguments '*: :_files' ;; esac