mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-12-29 16:52:31 +08:00
Adds support capistrano multistage completion
This commit is contained in:
parent
e2838f75f0
commit
16ae4e127f
@ -1,10 +1,49 @@
|
|||||||
#compdef cap
|
#compdef xcap cap
|
||||||
#autoload
|
#autoload
|
||||||
|
|
||||||
if [[ -f config/deploy.rb || -f Capfile ]]; then
|
# Added `xcap` because `cap` is a reserved word. `cap` completion doesn't work.
|
||||||
if [[ ! -f .cap_tasks~ || config/deploy.rb -nt .cap_tasks~ ]]; then
|
# http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module
|
||||||
echo "\nGenerating .cap_tasks~..." > /dev/stderr
|
|
||||||
cap -v --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~
|
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
|
||||||
|
xcap -v --tasks | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~
|
||||||
fi
|
fi
|
||||||
compadd `cat .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
|
||||||
|
11
plugins/capistrano/capistrano.plugin.zsh
Normal file
11
plugins/capistrano/capistrano.plugin.zsh
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Added `xcap` 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 xcap() {
|
||||||
|
if [ -f Gemfile ]
|
||||||
|
then
|
||||||
|
bundle exec cap $*
|
||||||
|
else
|
||||||
|
cap $*
|
||||||
|
fi
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user