94 lines
2.1 KiB
Bash
94 lines
2.1 KiB
Bash
## load chruby from different locations
|
|
|
|
_source-from-omz-settings() {
|
|
local _chruby_path _chruby_auto
|
|
|
|
zstyle -s :omz:plugins:chruby path _chruby_path || return 1
|
|
zstyle -s :omz:plugins:chruby auto _chruby_auto || return 1
|
|
|
|
if [[ -r ${_chruby_path} ]]; then
|
|
source ${_chruby_path}
|
|
fi
|
|
|
|
if [[ -r ${_chruby_auto} ]]; then
|
|
source ${_chruby_auto}
|
|
fi
|
|
}
|
|
|
|
_source-from-homebrew() {
|
|
(( $+commands[brew] )) || return 1
|
|
|
|
local _brew_prefix
|
|
# 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
|
|
|
|
[[ -r "$_brew_prefix" ]] || return 1
|
|
|
|
source $_brew_prefix/share/chruby/chruby.sh
|
|
source $_brew_prefix/share/chruby/auto.sh
|
|
}
|
|
|
|
_load-chruby-dirs() {
|
|
local dir
|
|
for dir in "$HOME/.rubies" "$PREFIX/opt/rubies"; do
|
|
if [[ -d "$dir" ]]; then
|
|
RUBIES+=("$dir")
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Load chruby
|
|
if _source-from-omz-settings; then
|
|
_load-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
|
|
_load-chruby-dirs
|
|
elif _source-from-homebrew; then
|
|
_load-chruby-dirs
|
|
fi
|
|
|
|
unfunction _source-from-homebrew _source-from-omz-settings _load-chruby-dirs
|
|
|
|
|
|
## chruby utility functions and aliases
|
|
|
|
# rvm and rbenv plugins also provide this alias
|
|
alias rubies='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):gs/%/%%}"
|
|
}
|
|
|
|
# Complete chruby command with installed rubies
|
|
_chruby() {
|
|
compadd $(chruby | tr -d '* ')
|
|
if PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" command ruby &>/dev/null; then
|
|
compadd system
|
|
fi
|
|
}
|
|
|
|
compdef _chruby chruby
|
|
|
|
|
|
# Simple definition completer for ruby-build
|
|
if command ruby-build &> /dev/null; then
|
|
_ruby-build() { compadd $(ruby-build --definitions) }
|
|
compdef _ruby-build ruby-build
|
|
fi
|