12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #compdef capit
- #autoload
- # Added `capit` because `cap` is a reserved word. `cap` completion doesn't work.
- # http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module
- local curcontext="$curcontext" state line ret=1
- local -a _configs
- _arguments -C \
- '1: :->cmds' \
- '2:: :->args' && ret=0
- _cap_tasks() {
- if [[ -f config/deploy.rb || -f Capfile ]]; then
- if [[ ! -f .cap_tasks~ ]]; then
- capit --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~
- fi
- OLD_IFS=$IFS
- IFS=$'\n'
- _values 'cap commands' $(< .cap_tasks~)
- IFS=$OLD_IFS
- # zmodload zsh/mapfile
- # _values ${(f)mapfile[.cap_tasks~]}
- fi
- }
- _cap_stages() {
- compadd $(find config/deploy -name \*.rb | cut -d/ -f3 | sed s:.rb::g)
- }
- case $state in
- cmds)
- # check if it uses multistage
- if [[ -d config/deploy ]]; then
- _cap_stages
- else
- _cap_tasks
- fi
- ret=0
- ;;
- args)
- _cap_tasks
- ret=0
- ;;
- esac
- return ret
|