50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #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
 |