# # 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' _homebrew-installed() { whence brew &> /dev/null _xit=$? if [ $_xit -eq 0 ];then # ok , we have brew installed # speculatively we check default brew prefix if [ -h /usr/local/opt/chruby ];then _brew_prefix="/usr/local/opt/chruby" else # ok , it is not default prefix # this call to brew is expensive ( about 400 ms ), so at least let's make it only once _brew_prefix=$(brew --prefix chruby) fi return 0 else return $_xit fi } _chruby-from-homebrew-installed() { [ -r _brew_prefix ] &> /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() { local _chruby_path local _chruby_auto zstyle -s :omz:plugins:chruby path _chruby_path zstyle -s :omz:plugins:chruby auto _chruby_auto if [[ -r ${_chruby_path} ]]; then source ${_chruby_path} fi if [[ -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/share/chruby/chruby.sh source $_brew_prefix/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