RVM Plugin
Robby Russell authored on 24/05/2011 at 10:01:491 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,147 @@ |
0 |
+#compdef rvm |
|
1 |
+ |
|
2 |
+local curcontext="$curcontext" state line cmds ret=1 |
|
3 |
+ |
|
4 |
+_arguments -C \ |
|
5 |
+ '(- 1 *)'{-v,--version}'[display version information]' \ |
|
6 |
+ '(-l|--level)'{-l,--level}'+[patch level to use with rvm use / install]:number' \ |
|
7 |
+ '(--prefix)--prefix[path for all rvm files (~/.rvm/), with trailing slash!]:path:_files' \ |
|
8 |
+ '(--bin)--bin[path for binaries to be placed (~/.rvm/bin/)]:path:_files' \ |
|
9 |
+ '(--source)--source[src directory to use (~/.rvm/src/)]:path:_files' \ |
|
10 |
+ '(--archives)--archives[directory for downladed files (~/.rvm/archives/)]:path:_files' \ |
|
11 |
+ '-S[Specify a script file to attempt to load and run (rubydo)]:file:_files' \ |
|
12 |
+ '-e[Execute code from the command line]:code' \ |
|
13 |
+ '(-G)-G[root gem path to use]:path:_files' \ |
|
14 |
+ '(--gems)--gems[Used to set the gems_flag, use with remove to remove gems]' \ |
|
15 |
+ '(--archive)--archive[Used to set the archive_flag, use with remove to remove archive]' \ |
|
16 |
+ '(--patch)--patch[With MRI Rubies you may specify one or more full paths to patches]' \ |
|
17 |
+ '(-C|--configure)'{-C,--configure}'=[custom configure options]' \ |
|
18 |
+ '(--nice)--nice[process niceness (for slow computers, default 0)]:number' \ |
|
19 |
+ '(--ree)--ree-options[Options passed directly to ree ./installer on the command line]:options' \ |
|
20 |
+ '(--head)--head[with update, updates rvm to git head version]' \ |
|
21 |
+ '(--rubygems)--rubygems[with update, updates rubygems for selected ruby]' \ |
|
22 |
+ '(--default)--default[with ruby select, sets a default ruby for new shells]' \ |
|
23 |
+ '(--debug)--debug[Toggle debug mode on for very verbose output]' \ |
|
24 |
+ '(--trace)--trace[Toggle trace mode on to see EVERYTHING rvm is doing]' \ |
|
25 |
+ '(--force)--force[Force install, removes old install & source before install]' \ |
|
26 |
+ '(--summary)--summary[Used with rubydo to print out a summary of the commands run]' \ |
|
27 |
+ '(--latest)--latest[with gemset --dump skips version strings for latest gem]' \ |
|
28 |
+ '(--gems)--gems[with uninstall/remove removes gems with the interpreter]' \ |
|
29 |
+ '(--docs)--docs[with install, attempt to generate ri after installation]' \ |
|
30 |
+ '(--reconfigure)--reconfigure[Force ./configure on install even if Makefile already exists]' \ |
|
31 |
+ '1: :->cmds' \ |
|
32 |
+ '*: :->args' && ret=0 |
|
33 |
+ |
|
34 |
+case $state in |
|
35 |
+ cmds) |
|
36 |
+ cmds=( |
|
37 |
+ "version:show the rvm version installed in rvm_path" |
|
38 |
+ "use:setup current shell to use a specific ruby version" |
|
39 |
+ "reload:reload rvm source itself (useful after changing rvm source)" |
|
40 |
+ "implode:(seppuku) removes the rvm installation completely. This means everything in $rvm_path (~/.rvm)." |
|
41 |
+ "update:upgrades rvm to the latest version." |
|
42 |
+ "reset:remove current and stored default & system settings." |
|
43 |
+ "info :show the *current* environment information for current ruby" |
|
44 |
+ "current:print the *current* ruby version and the name of any gemset being used." |
|
45 |
+ "debug:show info plus additional information for common issues" |
|
46 |
+ "install:install one or many ruby versions" |
|
47 |
+ "uninstall:uninstall one or many ruby versions, leaves their sources" |
|
48 |
+ "remove:uninstall one or many ruby versions and remove their sources" |
|
49 |
+ "migrate:Lets you migrate all gemsets from one ruby to another." |
|
50 |
+ "upgrade:Lets you upgrade from one version of a ruby to another, including migrating your gemsets semi-automatically." |
|
51 |
+ "wrapper:generates a set of wrapper executables for a given ruby with the specified ruby and gemset combination. Used under the hood for passenger support and the like." |
|
52 |
+ "cleanup:Lets you remove stale source folders / archives and other miscellaneous data associated with rvm." |
|
53 |
+ "repair:Lets you repair parts of your environment e.g. wrappers, env files and and similar files (e.g. general maintenance)." |
|
54 |
+ "snapshot:Lets your backup / restore an rvm installation in a lightweight manner." |
|
55 |
+ "disk-usage:Tells you how much disk space rvm install is using." |
|
56 |
+ "tools:Provides general information about the ruby environment, primarily useful when scripting rvm." |
|
57 |
+ "docs:Tools to make installing ri and rdoc documentation easier." |
|
58 |
+ "rvmrc:Tools related to managing rvmrc trust and loading." |
|
59 |
+ "exec:runs an arbitrary command as a set operation." |
|
60 |
+ "ruby:runs a named ruby file against specified and/or all rubies" |
|
61 |
+ "gem:runs a gem command using selected ruby's 'gem'" |
|
62 |
+ "rake:runs a rake task against specified and/or all rubies" |
|
63 |
+ "tests:runs 'rake test' across selected ruby versions" |
|
64 |
+ "specs:runs 'rake spec' across selected ruby versions" |
|
65 |
+ "monitor:Monitor cwd for testing, run rake {spec,test} on changes." |
|
66 |
+ "gemset:gemsets: http://rvm.beginrescueend.com/gemsets/" |
|
67 |
+ "rubygems:Switches the installed version of rubygems for the current ruby." |
|
68 |
+ "gemdir:display the path to the current gem directory (GEM_HOME)." |
|
69 |
+ "srcdir:display the path to rvm source directory (may be yanked)" |
|
70 |
+ "fetch:Performs an archive / src fetch only of the selected ruby." |
|
71 |
+ "list:show currently installed rubies, interactive output." |
|
72 |
+ "package:Install a dependency package {readline,iconv,zlib,openssl}" |
|
73 |
+ "notes:Display notes, with operating system specifics." |
|
74 |
+ "export:Temporarily set an environment variable in the current shell." |
|
75 |
+ "unexport:Undo changes made to the environment by 'rvm export'." |
|
76 |
+ ) |
|
77 |
+ _describe -t commands 'rvm command' cmds && ret=0 |
|
78 |
+ ;; |
|
79 |
+ args) |
|
80 |
+ case $line[1] in |
|
81 |
+ (use|uninstall|remove|list) |
|
82 |
+ _values -S , 'rubies' $(rvm list strings | sed -e 's/ruby-\([^) ]*\)-\([^) ]*\)/ruby-\1-\2 \1-\2 \1/g') default system && ret=0 |
|
83 |
+ ;; |
|
84 |
+ (install|fetch) |
|
85 |
+ _values -S , 'rubies' $(rvm list known_strings) && ret=0 |
|
86 |
+ ;; |
|
87 |
+ gemset) |
|
88 |
+ if (( CURRENT == 3 )); then |
|
89 |
+ _values 'gemset_commands' \ |
|
90 |
+ 'import' \ |
|
91 |
+ 'export' \ |
|
92 |
+ 'create' \ |
|
93 |
+ 'copy' \ |
|
94 |
+ 'rename' \ |
|
95 |
+ 'empty' \ |
|
96 |
+ 'delete' \ |
|
97 |
+ 'name' \ |
|
98 |
+ 'dir' \ |
|
99 |
+ 'list' \ |
|
100 |
+ 'list_all' \ |
|
101 |
+ 'gemdir' \ |
|
102 |
+ 'install' \ |
|
103 |
+ 'pristine' \ |
|
104 |
+ 'clear' \ |
|
105 |
+ 'use' \ |
|
106 |
+ 'update' \ |
|
107 |
+ 'unpack' \ |
|
108 |
+ 'globalcache' |
|
109 |
+ else |
|
110 |
+ _values -S , 'gemsets' $(rvm gemset list | grep -v gemset 2>/dev/null) |
|
111 |
+ fi |
|
112 |
+ ret=0 |
|
113 |
+ ;; |
|
114 |
+ package) |
|
115 |
+ if (( CURRENT == 3 )); then |
|
116 |
+ _values 'package_commands' \ |
|
117 |
+ 'install' \ |
|
118 |
+ 'uninstall' |
|
119 |
+ else |
|
120 |
+ _values 'packages' \ |
|
121 |
+ 'readline' \ |
|
122 |
+ 'iconv' \ |
|
123 |
+ 'curl' \ |
|
124 |
+ 'openssl' \ |
|
125 |
+ 'zlib' \ |
|
126 |
+ 'autoconf' \ |
|
127 |
+ 'ncurses' \ |
|
128 |
+ 'pkgconfig' \ |
|
129 |
+ 'gettext' \ |
|
130 |
+ 'glib' \ |
|
131 |
+ 'mono' \ |
|
132 |
+ 'llvm' \ |
|
133 |
+ 'libxml2' \ |
|
134 |
+ 'libxslt' \ |
|
135 |
+ 'libyaml' |
|
136 |
+ fi |
|
137 |
+ ret=0 |
|
138 |
+ ;; |
|
139 |
+ *) |
|
140 |
+ (( ret )) && _message 'no more arguments' |
|
141 |
+ ;; |
|
142 |
+ esac |
|
143 |
+ ;; |
|
144 |
+esac |
|
145 |
+ |
|
146 |
+return ret |