You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.1 KiB
						
					
					
				| #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
 | |
| 
 |