diff --git a/libexec/rbenv-version-origin b/libexec/rbenv-version-origin index ae7abf9c..a9d21c4c 100755 --- a/libexec/rbenv-version-origin +++ b/libexec/rbenv-version-origin @@ -3,7 +3,16 @@ set -e [ -n "$RBENV_DEBUG" ] && set -x -if [ -n "$RBENV_VERSION" ]; then +OLDIFS="$IFS" +IFS=$'\n' scripts=(`rbenv-hooks version-origin`) +IFS="$OLDIFS" +for script in "${scripts[@]}"; do + source "$script" +done + +if [ -n "$RBENV_VERSION_ORIGIN" ]; then + echo "$RBENV_VERSION_ORIGIN" +elif [ -n "$RBENV_VERSION" ]; then echo "RBENV_VERSION environment variable" else rbenv-version-file diff --git a/test/version-origin.bats b/test/version-origin.bats index 8ad4db04..fed0aaa5 100644 --- a/test/version-origin.bats +++ b/test/version-origin.bats @@ -2,6 +2,13 @@ load test_helper +export RBENV_HOOK_PATH="${RBENV_ROOT}/rbenv.d" + +create_hook() { + mkdir -p "${RBENV_ROOT}/rbenv.d/version-origin" + cat > "${RBENV_ROOT}/rbenv.d/version-origin/$1" <<<"$2" +} + setup() { mkdir -p "$RBENV_TEST_DIR" cd "$RBENV_TEST_DIR" @@ -36,3 +43,12 @@ setup() { run rbenv-version-origin assert_success "${PWD}/.rbenv-version" } + +@test "reports from hook" { + touch .ruby-version + create_hook test.bash "RBENV_VERSION_ORIGIN=plugin" + + RBENV_VERSION=1 run rbenv-version-origin + + assert_success "plugin" +}