#!/usr/bin/env bash set -e export -n CDPATH if [ "$1" = "--debug" ]; then export RBENV_DEBUG=1 shift fi if [ -n "$RBENV_DEBUG" ]; then export PS4='+ [${BASH_SOURCE##*/}:${LINENO}] ' set -x fi if enable -f "${BASH_SOURCE%/*}"/../libexec/rbenv-realpath.dylib realpath 2>/dev/null; then abs_dirname() { local path="$(realpath "$1")" echo "${path%/*}" } else if [ -n "$RBENV_NATIVE_EXT" ]; then echo "rbenv: failed to load \`realpath' builtin" >&2 exit 1 fi READLINK=$(type -p greadlink readlink | head -1) if [ -z "$READLINK" ]; then echo "rbenv: cannot find readlink - are you missing GNU coreutils?" >&2 exit 1 fi resolve_link() { $READLINK "$1" } abs_dirname() { local cwd="$(pwd)" local path="$1" while [ -n "$path" ]; do cd "${path%/*}" local name="${path##*/}" path="$(resolve_link "$name" || true)" done pwd cd "$cwd" } fi if [ -z "${RBENV_ROOT}" ]; then RBENV_ROOT="${HOME}/.rbenv" else RBENV_ROOT="${RBENV_ROOT%/}" fi export RBENV_ROOT if [ -z "${RBENV_DIR}" ]; then RBENV_DIR="$(pwd)" else cd "$RBENV_DIR" 2>/dev/null || { echo "rbenv: cannot change working directory to \`$RBENV_DIR'" exit 1 } >&2 RBENV_DIR="$(pwd)" cd "$OLDPWD" fi export RBENV_DIR shopt -s nullglob bin_path="$(abs_dirname "$0")" for plugin_bin in "${RBENV_ROOT}/plugins/"*/bin; do PATH="${plugin_bin}:${PATH}" done export PATH="${bin_path}:${PATH}" RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:${RBENV_ROOT}/rbenv.d" if [ "${bin_path%/*}" != "$RBENV_ROOT" ]; then # Add rbenv's own `rbenv.d` unless rbenv was cloned to RBENV_ROOT RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:${bin_path%/*}/rbenv.d" fi RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:/usr/local/etc/rbenv.d:/etc/rbenv.d:/usr/lib/rbenv/hooks" for plugin_hook in "${RBENV_ROOT}/plugins/"*/etc/rbenv.d; do RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:${plugin_hook}" done export RBENV_HOOK_PATH shopt -u nullglob command="$1" case "$command" in "" | "-h" | "--help" ) echo -e "$(rbenv---version)\n$(rbenv-help)" >&2 ;; "-v" ) exec rbenv---version ;; * ) command_path="$(command -v "rbenv-$command" || true)" if [ -z "$command_path" ]; then echo "rbenv: no such command \`$command'" >&2 exit 1 fi shift 1 exec "$command_path" "$@" ;; esac