|
|
|
@ -1,35 +1,45 @@ |
|
|
|
#!/usr/bin/env bash |
|
|
|
# Usage: rbenv version-file [<dir>] |
|
|
|
# Summary: Detect the file that sets the current rbenv version |
|
|
|
set -e |
|
|
|
[ -n "$RBENV_DEBUG" ] && set -x |
|
|
|
|
|
|
|
target_dir="$1" |
|
|
|
|
|
|
|
find_local_version_file() { |
|
|
|
local root="$1" |
|
|
|
while true; do |
|
|
|
[[ "$root" =~ ^//[^/]*$ ]] && break |
|
|
|
while ! [[ "$root" =~ ^//[^/]*$ ]]; do |
|
|
|
if [ -e "${root}/.ruby-version" ]; then |
|
|
|
echo "${root}/.ruby-version" |
|
|
|
exit |
|
|
|
return 0 |
|
|
|
elif [ -e "${root}/.rbenv-version" ]; then |
|
|
|
echo "${root}/.rbenv-version" |
|
|
|
exit |
|
|
|
return 0 |
|
|
|
fi |
|
|
|
[ -n "$root" ] || break |
|
|
|
root="${root%/*}" |
|
|
|
done |
|
|
|
return 1 |
|
|
|
} |
|
|
|
|
|
|
|
find_local_version_file "$RBENV_DIR" |
|
|
|
[ "$RBENV_DIR" = "$PWD" ] || find_local_version_file "$PWD" |
|
|
|
find_global_version_file() { |
|
|
|
local global_version_file="${RBENV_ROOT}/version" |
|
|
|
|
|
|
|
global_version_file="${RBENV_ROOT}/version" |
|
|
|
if [ -e "$global_version_file" ]; then |
|
|
|
echo "$global_version_file" |
|
|
|
elif [ -e "${RBENV_ROOT}/global" ]; then |
|
|
|
echo "${RBENV_ROOT}/global" |
|
|
|
elif [ -e "${RBENV_ROOT}/default" ]; then |
|
|
|
echo "${RBENV_ROOT}/default" |
|
|
|
else |
|
|
|
echo "$global_version_file" |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
if [ -e "$global_version_file" ]; then |
|
|
|
echo "$global_version_file" |
|
|
|
elif [ -e "${RBENV_ROOT}/global" ]; then |
|
|
|
echo "${RBENV_ROOT}/global" |
|
|
|
elif [ -e "${RBENV_ROOT}/default" ]; then |
|
|
|
echo "${RBENV_ROOT}/default" |
|
|
|
if [ -n "$target_dir" ]; then |
|
|
|
find_local_version_file "$target_dir" |
|
|
|
else |
|
|
|
echo "$global_version_file" |
|
|
|
find_local_version_file "$RBENV_DIR" || { |
|
|
|
[ "$RBENV_DIR" != "$PWD" ] && find_local_version_file "$PWD" |
|
|
|
} || find_global_version_file |
|
|
|
fi |