#compdef gas local curcontext="$curcontext" state line cmds ret=1 _arguments -C \ '(- 1 *)'{-v,--version}'[display version information]' \ '(-h|--help)'{-h,--help}'[show help information]' \ '1: :->cmds' \ '*: :->args' && ret=0 case $state in cmds) cmds=( "version:Prints Gas's version" "use:Uses author" "ssh:Creates a new ssh key for an existing gas author" "show:Shows your current user" "list:Lists your authors" "import:Imports current user to gasconfig" "help:Describe available tasks or one specific task" "delete:Deletes author" "add:Adds author to gasconfig" ) _describe -t commands 'gas command' cmds && ret=0 ;; args) case $line[1] in (use|delete) VERSION=$(gas -v) if [[ $VERSION == <1->.*.* ]] || [[ $VERSION == 0.<2->.* ]] || [[ $VERSION == 0.1.<6-> ]] then _values -S , 'authors' $(cat ~/.gas/gas.authors | sed -n -e 's/^.*\[\(.*\)\]/\1/p') && ret=0 else _values -S , 'authors' $(cat ~/.gas | sed -n -e 's/^\[\(.*\)\]/\1/p') && ret=0 fi esac ;; esac return ret