From 3ba9a50beec8461f52623bc298217d03cb108847 Mon Sep 17 00:00:00 2001 From: Charles B Johnson Date: Sat, 6 Dec 2014 21:13:45 -0800 Subject: [PATCH] Fix issue where some rbenv commands would fail (shell, rehash). Use rbenv fish integration, if available. Fix rbenv "supports fish" logic. --- plugins/rbenv/rbenv.fish | 1 - plugins/rbenv/rbenv.load | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/plugins/rbenv/rbenv.fish b/plugins/rbenv/rbenv.fish index f8f8a90..190cec2 100644 --- a/plugins/rbenv/rbenv.fish +++ b/plugins/rbenv/rbenv.fish @@ -9,4 +9,3 @@ function rbenv command rbenv "$command" $argv end end - diff --git a/plugins/rbenv/rbenv.load b/plugins/rbenv/rbenv.load index c907dc9..f4c02aa 100644 --- a/plugins/rbenv/rbenv.load +++ b/plugins/rbenv/rbenv.load @@ -1,7 +1,33 @@ -if test -n "$RBENV_ROOT" - _prepend_path $RBENV_ROOT/bin - _prepend_path $RBENV_ROOT/shims +set -l rbenv_dir "$RBENV_ROOT" +if [ ! $rbenv_dir ] + set rbenv_dir $HOME/.rbenv +end + +set -l supports_fish +set -l supports_fish_version '0.4.0' +set -l user_version (eval $rbenv_dir/bin/rbenv --version | sed -E 's/^rbenv ([[:digit:]\.]{2,}).*$/\1/g') + +if [ $user_version = $supports_fish_version ] + set -l supports_fish_commits '56' + set -l user_commits (eval $rbenv_dir/bin/rbenv --version | sed -E 's/^.+-([[:digit:]]{1,}).+$/\1/g') + if [ $user_commits -ge $supports_fish_commits ] + set supports_fish true + end +else + set -l higher_version (echo -e "$supports_fish_version\n$user_version" | \ + sort --field-separator . \ + --key 1,1 --numeric-sort --reverse \ + --key 2,2 --numeric-sort --reverse \ + --key 3,3 --numeric-sort --reverse | \ + head -n 1) + if [ $user_version = $higher_version ] + set supports_fish true + end +end + +_prepend_path $rbenv_dir/bin +if [ $supports_fish ] + status --is-interactive; and source (eval $rbenv_dir/bin/rbenv init - | psub) else - _prepend_path $HOME/.rbenv/bin - _prepend_path $HOME/.rbenv/shims + _prepend_path $rbenv_dir/shims end