pyenv/libexec/rbenv-init

173 lines
2.7 KiB
Text
Raw Normal View History

#!/usr/bin/env bash
2012-12-29 23:05:04 -05:00
# Summary: Configure the shell environment for rbenv
# Usage: eval "$(rbenv init - [--no-rehash] [<shell>])"
set -e
[ -n "$RBENV_DEBUG" ] && set -x
2011-08-04 00:16:28 -04:00
print=""
no_rehash=""
for args in "$@"
do
if [ "$args" = "-" ]; then
print=1
2013-03-23 09:36:11 -04:00
shift
fi
if [ "$args" = "--no-rehash" ]; then
no_rehash=1
shift
fi
done
shell="$1"
2011-08-04 00:16:28 -04:00
if [ -z "$shell" ]; then
shell="$(ps c -p $(ps -p $$ -o 'ppid=' 2>/dev/null) -o 'comm=' 2>/dev/null || true)"
shell="${shell##-}"
shell="$(basename "${shell:-$SHELL}")"
2011-08-04 00:16:28 -04:00
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"
}
2011-08-04 00:16:28 -04:00
abs_dirname() {
local cwd="$(pwd)"
local path="$1"
while [ -n "$path" ]; do
cd "${path%/*}"
local name="${path##*/}"
path="$(resolve_link "$name" || true)"
2011-08-04 00:16:28 -04:00
done
pwd
cd "$cwd"
}
2011-08-04 00:16:28 -04:00
root="$(abs_dirname "$0")/.."
if [ -z "$print" ]; then
case "$shell" in
bash )
profile='~/.bash_profile'
;;
zsh )
profile='~/.zshrc'
;;
ksh )
profile='~/.profile'
;;
2013-08-15 10:01:13 -04:00
fish )
profile='~/.config/fish/config.fish'
;;
* )
profile='your profile'
;;
esac
{ echo "# Load rbenv automatically by adding"
echo "# the following to ${profile}:"
echo
case "$shell" in
fish )
echo 'status --is-interactive; and . (rbenv init -|psub)'
;;
* )
echo 'eval "$(rbenv init -)"'
;;
esac
echo
} >&2
exit 1
fi
2011-09-11 12:58:57 -04:00
mkdir -p "${RBENV_ROOT}/"{shims,versions}
2013-02-24 16:34:05 -05:00
if [[ ":${PATH}:" != *:"${RBENV_ROOT}/shims":* ]]; then
2013-08-15 10:01:13 -04:00
case "$shell" in
fish )
echo "setenv PATH '${RBENV_ROOT}/shims' \$PATH"
2013-08-15 10:01:13 -04:00
;;
* )
echo 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"'
;;
esac
2013-02-24 16:34:05 -05:00
fi
2011-08-04 00:16:28 -04:00
case "$shell" in
fish )
echo "setenv RBENV_SHELL $shell"
;;
* )
echo "export RBENV_SHELL=$shell"
;;
esac
completion="${root}/completions/rbenv.${shell}"
if [ -r "$completion" ]; then
case "$shell" in
fish ) echo ". '$completion'" ;;
* ) echo "source '$completion'" ;;
esac
fi
2011-08-15 02:18:04 -04:00
if [ -z "$no_rehash" ]; then
echo 'rbenv rehash 2>/dev/null'
fi
commands=(`rbenv-commands --sh`)
2013-08-15 10:01:13 -04:00
case "$shell" in
fish )
cat <<EOS
function rbenv
set command \$argv[1]
set -e argv[1]
2013-08-15 10:01:13 -04:00
switch "\$command"
case ${commands[*]}
eval (rbenv "sh-\$command" \$argv)
case '*'
command rbenv "\$command" \$argv
end
end
EOS
exit 0
;;
ksh )
cat <<EOS
function rbenv {
typeset command
2013-08-15 10:01:13 -04:00
EOS
;;
* )
cat <<EOS
rbenv() {
local command
EOS
;;
esac
IFS="|"
cat <<EOS
command="\$1"
if [ "\$#" -gt 0 ]; then
shift
fi
2011-09-10 20:45:36 -04:00
case "\$command" in
${commands[*]})
eval "\`rbenv "sh-\$command" "\$@"\`";;
*)
2011-09-10 20:45:36 -04:00
command rbenv "\$command" "\$@";;
esac
}
EOS