128 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
| #compdef rvm
 | ||
| # ------------------------------------------------------------------------------
 | ||
| # Description
 | ||
| # -----------
 | ||
| #
 | ||
| #  Completion script for rvm (https://rvm.beginrescueend.com/).
 | ||
| #
 | ||
| #  Source: https://github.com/wayneeseguin/rvm/blob/master/scripts/zsh/Completion/_rvm
 | ||
| #
 | ||
| # ------------------------------------------------------------------------------
 | ||
| # Authors
 | ||
| # -------
 | ||
| #
 | ||
| #  * Bruno Michel (https://github.com/nono)
 | ||
| #
 | ||
| # ------------------------------------------------------------------------------
 | ||
| 
 | ||
| local curcontext="$curcontext" state line cmds ret=1
 | ||
| 
 | ||
| _arguments -C \
 | ||
|   '(- 1 *)'{-v,--version}'[display version information]' \
 | ||
|   '(-l --level)'{-l,--level}'+[patch level to use with rvm use / install]:number' \
 | ||
|   '--bin[path for binaries to be placed (~/.rvm/bin/)]:path:_files' \
 | ||
|   '--source[src directory to use (~/.rvm/src/)]:path:_files' \
 | ||
|   '--archives[directory for downladed files (~/.rvm/archives/)]:path:_files' \
 | ||
|   '-S[Specify a script file to attempt to load and run (rubydo)]:file:_files' \
 | ||
|   '-e[Execute code from the command line]:code' \
 | ||
|   '-G[root gem path to use]:path:_files' \
 | ||
|   '--gems[Used to set the gems_flag, use with remove to remove gems]' \
 | ||
|   '--archive[Used to set the archive_flag, use with remove to remove archive]' \
 | ||
|   '--patch[With MRI Rubies you may specify one or more full paths to patches]:paths:->patches' \
 | ||
|   '(-C --configure)'{-C,--configure}'=[custom configure options]' \
 | ||
|   '--nice[process niceness (for slow computers, default 0)]:number' \
 | ||
|   '--ree-options[Options passed directly to ree ./installer on the command line]:options' \
 | ||
|   '--head[with update, updates rvm to git head version]' \
 | ||
|   '--rubygems[with update, updates rubygems for selected ruby]' \
 | ||
|   '--default[with ruby select, sets a default ruby for new shells]' \
 | ||
|   '--debug[Toggle debug mode on for very verbose output]' \
 | ||
|   '--trace[Toggle trace mode on to see EVERYTHING rvm is doing]' \
 | ||
|   '--force[Force install, even given ruby is already install]' \
 | ||
|   '--summary[Used with rubydo to print out a summary of the commands run]' \
 | ||
|   '--latest[with gemset --dump skips version strings for latest gem]' \
 | ||
|   '--gems[with uninstall/remove removes gems with the interpreter]' \
 | ||
|   '--docs[with install, attempt to generate ri after installation]' \
 | ||
|   '--reconfigure[Force ./configure on install even if Makefile already exists]' \
 | ||
|   '1: :->cmds' \
 | ||
|   '*: :->args' && ret=0
 | ||
| 
 | ||
| case $state in
 | ||
| 
 | ||
|   patches)
 | ||
|     compset -P '*,'
 | ||
|     compset -S ',*'
 | ||
|     _files -q -S ,
 | ||
|     ;;
 | ||
| 
 | ||
|   cmds)
 | ||
| 
 | ||
|     cmds=( ${(f)"$(_call_program commands rvm help 2> /dev/null | __rvm_sed -e '/^== Action/,/^== Implementation/!d; / :: /!d; s/^[ *]*\([^ ]*\) *:: *\(.*\)/\1:\2/')"} )
 | ||
|     cmds+=( $(rvm list strings) )
 | ||
|     _describe -t commands 'rvm command' cmds && ret=0
 | ||
|     ;;
 | ||
| 
 | ||
|   args)
 | ||
| 
 | ||
|     case $line[1] in
 | ||
| 
 | ||
|       (use|uninstall|remove|list)
 | ||
| 
 | ||
|         if (( CURRENT == 3 )); then
 | ||
|           # See if we’ve made it to the ‘@’; eg, 1.9.2@
 | ||
|           if ! __rvm_grep '@' <<< "${line[CURRENT-1]}" >/dev/null ; then
 | ||
|             _values -S , 'rubies' \
 | ||
|               $(rvm list strings | __rvm_sed -e 's/ruby-\([^) ]*\)-\([^) ]*\)/ruby-\1-\2 \1-\2 \1/g') \
 | ||
|               default system $(rvm alias list names) && ret=0
 | ||
|           else
 | ||
|             # Construct a full version string for each of the gemsets.
 | ||
|             # Eg, 1.9.2@min 1.9.2@rail3 …
 | ||
|             _values -S , 'gemsets' \
 | ||
|               $(rvm ${line[CURRENT-1]%%@*} gemset list | __rvm_awk '/^[ -_[:alnum:]]+$/ {print "'${line[CURRENT-1]%%@*}'@"$1}')
 | ||
|           fi
 | ||
|         fi
 | ||
|         ;;
 | ||
| 
 | ||
|       (install|fetch)
 | ||
| 
 | ||
|         _values -S , 'rubies' $(rvm list known_strings) && ret=0
 | ||
|         ;;
 | ||
| 
 | ||
|       gemset)
 | ||
| 
 | ||
|         if (( CURRENT == 3 )); then
 | ||
|           _values 'gemset_commands' $(rvm gemset help | __rvm_sed -e '/create/!d; s/^.*[{]\(.*\)[}].*$/\1/; s/,/ /g')
 | ||
|         else
 | ||
|           #_values -S , 'gemsets' $(rvm gemset list | __rvm_grep -v gemset 2>/dev/null)
 | ||
|           _values -S , 'gemsets' $(rvm gemset list | __rvm_grep -Ev '(gemset|info)' 2>/dev/null | __rvm_awk '/^[ -_[:alnum:]]+$/ {print '$1'}')
 | ||
|         fi
 | ||
|         ret=0
 | ||
|         ;;
 | ||
| 
 | ||
|       package)
 | ||
| 
 | ||
|         if (( CURRENT == 3 )); then
 | ||
|           _values 'package_commands' $(rvm package | __rvm_sed -e '/Usage/!d; s/^.*[{]\(.*\)[}] [{].*$/\1/; s/,/ /g')
 | ||
|         else
 | ||
|           _values 'packages' $(rvm package | __rvm_sed -e '/Usage/!d; s/^.*[}] [{]\(.*\)[}].*$/\1/; s/,/ /g')
 | ||
|         fi
 | ||
|         ret=0
 | ||
|         ;;
 | ||
| 
 | ||
|       *)
 | ||
|         (( ret )) && _message 'no more arguments'
 | ||
|         ;;
 | ||
| 
 | ||
|     esac
 | ||
|     ;;
 | ||
| esac
 | ||
| 
 | ||
| return ret
 | ||
| 
 | ||
| # Local Variables:
 | ||
| # mode: Shell-Script
 | ||
| # sh-indentation: 2
 | ||
| # indent-tabs-mode: nil
 | ||
| # sh-basic-offset: 2
 | ||
| # End:
 | ||
| # vim: ft=zsh sw=2 ts=2 et
 |