summaryrefslogtreecommitdiff
path: root/plugins/rvm/rvm.plugin.zsh
blob: 864389ba8d0a88092b96df5784c69c87d7d403c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 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'
)

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"
}