summaryrefslogtreecommitdiff
path: root/oh-my-zsh/plugins/rvm
diff options
context:
space:
mode:
authorAditya <bluenerd@protonmail.com>2023-02-27 20:04:56 +0530
committerAditya <bluenerd@protonmail.com>2023-02-27 20:04:56 +0530
commitedc449275b6c04445f58b108ca0937a87c1e8430 (patch)
tree9fd484d58145b616f29a78857cc0b1c8b1c18f05 /oh-my-zsh/plugins/rvm
parent6f5424ca96c4221ef433f545642669e9c104d0ed (diff)
add zsh
Diffstat (limited to 'oh-my-zsh/plugins/rvm')
-rw-r--r--oh-my-zsh/plugins/rvm/README.md36
-rw-r--r--oh-my-zsh/plugins/rvm/rvm.plugin.zsh55
2 files changed, 91 insertions, 0 deletions
diff --git a/oh-my-zsh/plugins/rvm/README.md b/oh-my-zsh/plugins/rvm/README.md
new file mode 100644
index 0000000..576b037
--- /dev/null
+++ b/oh-my-zsh/plugins/rvm/README.md
@@ -0,0 +1,36 @@
+# Ruby Version Manager plugin
+
+This plugin adds some utility functions and completions for [Ruby Version Manager](https://rvm.io/).
+
+To use it, add `rvm` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... rvm)
+```
+
+## Aliases
+
+| Alias | Command |
+| ------------ | -------------------- |
+| `rb18` | `rvm use ruby-1.8.7` |
+| `rb19` | `rvm use ruby-1.9.3` |
+| `rb20` | `rvm use ruby-2.0.0` |
+| `rb21` | `rvm use ruby-2.1` |
+| `rb22` | `rvm use ruby-2.2` |
+| `rb23` | `rvm use ruby-2.3` |
+| `rb24` | `rvm use ruby-2.4` |
+| `rb25` | `rvm use ruby-2.5` |
+| `rb26` | `rvm use ruby-2.6` |
+| `rb27` | `rvm use ruby-2.7` |
+| `rb30` | `rvm use ruby-3.0` |
+| `rb31` | `rvm use ruby-3.1` |
+| `rvm-update` | `rvm get head` |
+| `gems` | `gem list` |
+| `rvms` | `rvm gemset` |
+
+## Deprecated versions
+
+At the time of writing this (2021-12-28), Ruby versions until 2.5 are [EOL][1],
+and will be removed in the future.
+
+[1]: https://endoflife.date/ruby
diff --git a/oh-my-zsh/plugins/rvm/rvm.plugin.zsh b/oh-my-zsh/plugins/rvm/rvm.plugin.zsh
new file mode 100644
index 0000000..2a091d0
--- /dev/null
+++ b/oh-my-zsh/plugins/rvm/rvm.plugin.zsh
@@ -0,0 +1,55 @@
+# Completion
+fpath+=("${rvm_path}/scripts/zsh/Completion")
+
+typeset -g -A _comps
+autoload -Uz _rvm
+_comps[rvm]=_rvm
+
+# Aliases
+alias rubies='rvm list rubies'
+alias rvms='rvm gemset'
+alias gemsets='rvms list'
+
+
+# rb{version} utilities
+# From `rvm list known`
+typeset -A rubies
+rubies=(
+ 18 'ruby-1.8.7'
+ 19 'ruby-1.9.3'
+ 20 'ruby-2.0.0'
+ 21 'ruby-2.1'
+ 22 'ruby-2.2'
+ 23 'ruby-2.3'
+ 24 'ruby-2.4'
+ 25 'ruby-2.5'
+ 26 'ruby-2.6'
+ 27 'ruby-2.7'
+ 30 'ruby-3.0'
+ 31 'ruby-3.1'
+)
+
+for v in ${(k)rubies}; do
+ version="${rubies[$v]}"
+ functions[rb${v}]="rvm use ${version}\${1+"@\$1"}"
+ functions[_rb${v}]="compadd \$(ls -1 \"\${rvm_path}/gems\" | grep '^${version}@' | sed -e 's/^${version}@//' | awk '{print $1}')"
+ compdef _rb$v rb$v
+done
+unset rubies v version
+
+
+function rvm-update {
+ rvm get head
+}
+
+# TODO: Make this usable w/o rvm.
+function gems {
+ local current_ruby=`rvm-prompt i v p`
+ local current_gemset=`rvm-prompt g`
+
+ gem list $@ | sed -E \
+ -e "s/\([0-9, \.]+( .+)?\)/$fg[blue]&$reset_color/g" \
+ -e "s|$(echo $rvm_path)|$fg[magenta]\$rvm_path$reset_color|g" \
+ -e "s/$current_ruby@global/$fg[yellow]&$reset_color/g" \
+ -e "s/$current_ruby$current_gemset$/$fg[green]&$reset_color/g"
+}