From 20ecca2ba9a9cf88a48fdfc48c4d3e2718752843 Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Wed, 8 May 2019 09:51:05 +0200 Subject: [PATCH] rbenv: improve rbenv loading based on pyenv (#7626) --- plugins/pyenv/pyenv.plugin.zsh | 2 +- plugins/rbenv/rbenv.plugin.zsh | 85 ++++++++++++++++++---------------- 2 files changed, 46 insertions(+), 41 deletions(-) diff --git a/plugins/pyenv/pyenv.plugin.zsh b/plugins/pyenv/pyenv.plugin.zsh index 4e92b8017..40e58b5c2 100644 --- a/plugins/pyenv/pyenv.plugin.zsh +++ b/plugins/pyenv/pyenv.plugin.zsh @@ -38,4 +38,4 @@ else } fi -unset FOUND_PYENV dir +unset FOUND_PYENV pyenvdirs dir diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh index 7430e9625..ed46d355b 100644 --- a/plugins/rbenv/rbenv.plugin.zsh +++ b/plugins/rbenv/rbenv.plugin.zsh @@ -1,60 +1,65 @@ -_homebrew-installed() { - type brew &> /dev/null -} +# This plugin loads rbenv into the current shell and provides prompt info via +# the 'rbenv_prompt_info' function. -FOUND_RBENV=0 -rbenvdirs=("$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv" "/usr/local/opt/rbenv") -if _homebrew-installed && rbenv_homebrew_path=$(brew --prefix rbenv 2>/dev/null); then - rbenvdirs=($rbenv_homebrew_path "${rbenvdirs[@]}") - unset rbenv_homebrew_path - if [[ $RBENV_ROOT = '' ]]; then - RBENV_ROOT="$HOME/.rbenv" +FOUND_RBENV=$+commands[rbenv] + +if [[ $FOUND_RBENV -ne 1 ]]; then + rbenvdirs=("$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv" "/usr/local/opt/rbenv") + for dir in $rbenvdirs; do + if [[ -d $dir/bin ]]; then + export PATH="$dir/bin:$PATH" + FOUND_RBENV=1 + break + fi + done +fi + +if [[ $FOUND_RBENV -ne 1 ]]; then + if (( $+commands[brew] )) && dir=$(brew --prefix rbenv 2>/dev/null); then + if [[ -d $dir/bin ]]; then + export PATH="$dir/bin:$PATH" + FOUND_RBENV=1 + fi fi fi -for rbenvdir in "${rbenvdirs[@]}" ; do - if [ -d $rbenvdir/bin -a $FOUND_RBENV -eq 0 ] ; then - FOUND_RBENV=1 - if [[ $RBENV_ROOT = '' ]]; then - RBENV_ROOT=$rbenvdir - fi - export RBENV_ROOT - export PATH=${rbenvdir}/bin:$PATH +if [[ $FOUND_RBENV -eq 1 ]]; then eval "$(rbenv init --no-rehash - zsh)" alias rubies="rbenv versions" alias gemsets="rbenv gemset list" function current_ruby() { - echo "$(rbenv version-name)" + echo "$(rbenv version-name)" } function current_gemset() { - echo "$(rbenv gemset active 2&>/dev/null | sed -e ":a" -e '$ s/\n/+/gp;N;b a' | head -n1)" + echo "$(rbenv gemset active 2&>/dev/null | sed -e ":a" -e '$ s/\n/+/gp;N;b a' | head -n1)" } - function gems { - local rbenv_path=$(rbenv prefix) - gem list $@ | sed -E \ - -e "s/\([0-9a-z, \.]+( .+)?\)/$fg[blue]&$reset_color/g" \ - -e "s|$(echo $rbenv_path)|$fg[magenta]\$rbenv_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" + function gems() { + local rbenv_path=$(rbenv prefix) + gem list $@ | sed -E \ + -e "s/\([0-9a-z, \.]+( .+)?\)/$fg[blue]&$reset_color/g" \ + -e "s|$(echo $rbenv_path)|$fg[magenta]\$rbenv_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" } function rbenv_prompt_info() { - if [[ -n $(current_gemset) ]] ; then - echo "$(current_ruby)@$(current_gemset)" - else - echo "$(current_ruby)" - fi + if [[ -n $(current_gemset) ]] ; then + echo "$(current_ruby)@$(current_gemset)" + else + echo "$(current_ruby)" + fi } - fi -done -unset rbenvdir - -if [ $FOUND_RBENV -eq 0 ] ; then - alias rubies='ruby -v' - function gemsets() { echo 'not supported' } - function rbenv_prompt_info() { echo "system: $(ruby -v | cut -f-2 -d ' ')" } +else + alias rubies="ruby -v" + function gemsets() { echo "not supported" } + function current_ruby() { echo "not supported" } + function current_gemset() { echo "not supported" } + function gems() { echo "not supported" } + function rbenv_prompt_info() { echo "system: $(ruby -v | cut -f-2 -d ' ')" } fi + +unset FOUND_RBENV rbenvdirs dir