Skip to content

Commit

Permalink
Merge pull request #2261 from webframp/feature/chruby-plugin
Browse files Browse the repository at this point in the history
Add simple plugin for chruby ruby version manager
  • Loading branch information
robbyrussell committed Nov 24, 2013
2 parents fabe23b + 037b39a commit 66a33b8
Showing 1 changed file with 99 additions and 0 deletions.
99 changes: 99 additions & 0 deletions plugins/chruby/chruby.plugin.zsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
#
# INSTRUCTIONS
#
# With either a manual or brew installed chruby things should just work.
#
# If you'd prefer to specify an explicit path to load chruby from
# you can set variables like so:
#
# zstyle :omz:plugins:chruby path /local/path/to/chruby.sh
# zstyle :omz:plugins:chruby auto /local/path/to/auto.sh
#
# TODO
# - autodetermine correct source path on non OS X systems
# - completion if ruby-install exists

# rvm and rbenv plugins also provide this alias
alias rubies='chruby'

local _chruby_path
local _chruby_auto

_homebrew-installed() {
whence brew &> /dev/null
}

_chruby-from-homebrew-installed() {
brew --prefix chruby &> /dev/null
}

_ruby-build_installed() {
whence ruby-build &> /dev/null
}

_ruby-install-installed() {
whence ruby-install &> /dev/null
}

# Simple definition completer for ruby-build
if _ruby-build_installed; then
_ruby-build() { compadd $(ruby-build --definitions) }
compdef _ruby-build ruby-build
fi

_source_from_omz_settings() {
zstyle -s :omz:plugins:chruby path _chruby_path
zstyle -s :omz:plugins:chruby auto _chruby_auto

if _chruby_path && [[ -r _chruby_path ]]; then
source ${_chruby_path}
fi

if _chruby_auto && [[ -r _chruby_auto ]]; then
source ${_chruby_auto}
fi
}

_chruby_dirs() {
chrubydirs=($HOME/.rubies/ $PREFIX/opt/rubies)
for dir in chrubydirs; do
if [[ -d $dir ]]; then
RUBIES+=$dir
fi
done
}

if _homebrew-installed && _chruby-from-homebrew-installed ; then
source $(brew --prefix chruby)/share/chruby/chruby.sh
source $(brew --prefix chruby)/share/chruby/auto.sh
_chruby_dirs
elif [[ -r "/usr/local/share/chruby/chruby.sh" ]] ; then
source /usr/local/share/chruby/chruby.sh
source /usr/local/share/chruby/auto.sh
_chruby_dirs
else
_source_from_omz_settings
_chruby_dirs
fi

function ensure_chruby() {
$(whence chruby)
}

function current_ruby() {
local _ruby
_ruby="$(chruby |grep \* |tr -d '* ')"
if [[ $(chruby |grep -c \*) -eq 1 ]]; then
echo ${_ruby}
else
echo "system"
fi
}

function chruby_prompt_info() {
echo "$(current_ruby)"
}

# complete on installed rubies
_chruby() { compadd $(chruby | tr -d '* ') }
compdef _chruby chruby

0 comments on commit 66a33b8

Please sign in to comment.