## 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