diff options
author | Andrew Janke <andrew@apjanke.net> | 2015-09-28 08:52:03 -0400 |
---|---|---|
committer | Andrew Janke <andrew@apjanke.net> | 2015-09-28 08:52:03 -0400 |
commit | e4fdb083655fc582ebcecb07cd1bd1130077f0e4 (patch) | |
tree | fee07d9adfee79d1c88206ead154a23520ac51cb /plugins/capistrano | |
parent | 5c8b0cc0c1782b34790548498018fb9e0300992b (diff) | |
parent | b05ef1034fffd7b0c29f1558a8a357ccce7ae74b (diff) | |
download | zsh-e4fdb083655fc582ebcecb07cd1bd1130077f0e4.tar.gz zsh-e4fdb083655fc582ebcecb07cd1bd1130077f0e4.tar.bz2 zsh-e4fdb083655fc582ebcecb07cd1bd1130077f0e4.zip |
Merge branch 'master' into copyfile-portability
Diffstat (limited to 'plugins/capistrano')
-rw-r--r-- | plugins/capistrano/_capistrano | 53 | ||||
-rw-r--r-- | plugins/capistrano/capistrano.plugin.zsh | 11 |
2 files changed, 57 insertions, 7 deletions
diff --git a/plugins/capistrano/_capistrano b/plugins/capistrano/_capistrano index 3cadf3d54..c19c20b7a 100644 --- a/plugins/capistrano/_capistrano +++ b/plugins/capistrano/_capistrano @@ -1,10 +1,49 @@ -#compdef cap +#compdef shipit #autoload -if [[ -f config/deploy.rb || -f Capfile ]]; then - if [[ ! -f .cap_tasks~ || config/deploy.rb -nt .cap_tasks~ ]]; then - echo "\nGenerating .cap_tasks~..." > /dev/stderr - cap -v --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~ +# Added `shipit` 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 + shipit --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 - compadd `cat .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 diff --git a/plugins/capistrano/capistrano.plugin.zsh b/plugins/capistrano/capistrano.plugin.zsh new file mode 100644 index 000000000..c85eb474c --- /dev/null +++ b/plugins/capistrano/capistrano.plugin.zsh @@ -0,0 +1,11 @@ +# Added `shipit` because `cap` is a reserved word. `cap` completion doesn't work. +# http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module + +func shipit() { + if [ -f Gemfile ] + then + bundle exec cap $* + else + cap $* + fi +} |