8861d5c3a7274148cd48b49225cd5f4a0ed363a1

Author
Marc Cornellà <hello@mcornella.com>
Committer
Marc Cornellà <hello@mcornella.com>
Date

Message

refactor(rvm): clean up `rb*` utilities definition and add more versions

Diff

This diff is truncated to protect this page.

  1diff --git a/plugins/rvm/README.md b/plugins/rvm/README.md
  2index 4ddc7cc850576a89903bd3980edccec07ae1552b..258c894202a84ecc83dfd3635599f50db38d4871 100644
  3--- a/plugins/rvm/README.md
  4+++ b/plugins/rvm/README.md
  5@@ -10,16 +10,26 @@ plugins=(... rvm)
  6 
  7 ## Aliases
  8 
  9-| Alias          | Command              |
 10-|----------------|----------------------|
 11-| `rb18`         | `rvm use ruby-1.8.7` |
 12-| `rb19`         | `rvm use ruby-1.9.3` |
 13-| `rb20`         | `rvm use ruby-2.0.0` |
 14-| `rb21`         | `rvm use ruby-2.1.2` |
 15-| `rb25`         | `rvm use ruby-2.5.9` |
 16-| `rb26`         | `rvm use ruby-2.6.7` |
 17-| `rb27`         | `rvm use ruby-2.7.3` |
 18-| `rb30`         | `rvm use ruby-3.0.1` |
 19-| `rvm-update`   | `rvm get head`       |
 20-| `gems`         | `gem list`           |
 21-| `rvms`         | `rvm gemset`         |
 22+| Alias        | Command              |
 23+| ------------ | -------------------- |
 24+| `rb18`       | `rvm use ruby-1.8.7` |
 25+| `rb19`       | `rvm use ruby-1.9.3` |
 26+| `rb20`       | `rvm use ruby-2.0.0` |
 27+| `rb21`       | `rvm use ruby-2.1`   |
 28+| `rb22`       | `rvm use ruby-2.2`   |
 29+| `rb23`       | `rvm use ruby-2.3`   |
 30+| `rb24`       | `rvm use ruby-2.4`   |
 31+| `rb25`       | `rvm use ruby-2.5`   |
 32+| `rb26`       | `rvm use ruby-2.6`   |
 33+| `rb27`       | `rvm use ruby-2.7`   |
 34+| `rb30`       | `rvm use ruby-3.0`   |
 35+| `rvm-update` | `rvm get head`       |
 36+| `gems`       | `gem list`           |
 37+| `rvms`       | `rvm gemset`         |
 38+
 39+## Deprecated versions
 40+
 41+At the time of writing this (2021-12-28), Ruby versions until 2.5 are [EOL][1],
 42+and will be removed in the future.
 43+
 44+[1]: https://endoflife.date/ruby
 45diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh
 46index 64a99278ce3d9d4e255516e9fa053a1d32641b34..4ba8855634bd8763a3ed93e6be3b67270d44a35f 100644
 47--- a/plugins/rvm/rvm.plugin.zsh
 48+++ b/plugins/rvm/rvm.plugin.zsh
 49@@ -1,123 +1,54 @@
 50-fpath=($rvm_path/scripts/zsh/Completion $fpath)
 51+# Completion
 52+fpath+=("${rvm_path}/scripts/zsh/Completion")
 53 
 54+declare -A _comps
 55+autoload -Uz _rvm
 56+_comps[rvm]=_rvm
 57+
 58+# Aliases
 59 alias rubies='rvm list rubies'
 60 alias rvms='rvm gemset'
 61 alias gemsets='rvms list'
 62 
 63-local ruby18='ruby-1.8.7'
 64-local ruby19='ruby-1.9.3'
 65-local ruby20='ruby-2.0.0'
 66-local ruby21='ruby-2.1.2'
 67-local ruby25='ruby-2.5.9'
 68-local ruby26='ruby-2.6.7'
 69-local ruby27='ruby-2.7.3'
 70-local ruby30='ruby-3.0.1'
 71-
 72-function rb18 {
 73-	if [ -z "$1" ]; then
 74-		rvm use "$ruby18"
 75-	else
 76-		rvm use "$ruby18@$1"
 77-	fi
 78-}
 79 
 80-_rb18() {compadd `ls -1 $rvm_path/gems | grep "^$ruby18@" | sed -e "s/^$ruby18@//" | awk '{print $1}'`}
 81-compdef _rb18 rb18
 82+# rb{version} utilities
 83+# From `rvm list known`
 84+typeset -A rubies
 85+rubies=(
 86+  18  'ruby-1.8.7'
 87+  19  'ruby-1.9.3'
 88+  20  'ruby-2.0.0'
 89+  21  'ruby-2.1'
 90+  22  'ruby-2.2'
 91+  23  'ruby-2.3'
 92+  24  'ruby-2.4'
 93+  25  'ruby-2.5'
 94+  26  'ruby-2.6'
 95+  27  'ruby-2.7'
 96+  30  'ruby-3.0'
 97+)
 98+
 99+for v in ${(k)rubies}; do
100+  version="${rubies[$v]}"
101+  functions[rb${v}]="rvm use ${version}\${1+"@\$1"}"
102+  functions[_rb${v}]="compadd \$(ls -1 \"\${rvm_path}/gems\" | grep '^${version}@' | sed -e 's/^${version}@//' | awk '{print $1}')"
103+  compdef _rb$v rb$v
104+done
105+unset rubies v version
106 
107-function rb19 {
108-	if [ -z "$1" ]; then
109-		rvm use "$ruby19"
110-	else
111-		rvm use "$ruby19@$1"
112-	fi
113-}
114-
115-_rb19() {compadd `ls -1 $rvm_path/gems | grep "^$ruby19@" | sed -e "s/^$ruby19@//" | awk '{print $1}'`}
116-compdef _rb19 rb19
117-
118-function rb20 {
119-	if [ -z "$1" ]; then
120-		rvm use "$ruby20"
121-	else
122-		rvm use "$ruby20@$1"
123-	fi
124-}
125-
126-_rb20() {compadd `ls -1 $rvm_path/gems | grep "^$ruby20@" | sed -e "s/^$ruby20@//" | awk '{print $1}'`}
127-compdef _rb20 rb20
128-
129-function rb21 {
130-	if [ -z "$1" ]; then
131-		rvm use "$ruby21"
132-	else
133-		rvm use "$ruby21@$1"
134-	fi
135-}
136-
137-_rb21() {compadd `ls -1 $rvm_path/gems | grep "^$ruby21@" | sed -e "s/^$ruby21@//" | awk '{print $1}'`}
138-compdef _rb21 rb21
139-
140-function rb25 {
141-	if [ -z "$1" ]; then
142-		rvm use "$ruby25"
143-	else
144-		rvm use "$ruby25@$1"
145-	fi
146-}
147-
148-_rb25() {compadd `ls -1 $rvm_path/gems | grep "^$ruby25@" | sed -e "s/^$ruby25@//" | awk '{print $1}'`}