pyenv/libexec/pyenv-init
2013-08-15 22:56:53 +09:00

141 lines
2.2 KiB
Bash
Executable file

#!/usr/bin/env bash
# Summary: Configure the shell environment for pyenv
# Usage: eval "$(pyenv init - [--no-rehash] [<shell>])"
set -e
[ -n "$PYENV_DEBUG" ] && set -x
print=""
no_rehash=""
for args in "$@"
do
if [ "$args" = "-" ]; then
print=1
shift
fi
if [ "$args" = "--no-rehash" ]; then
no_rehash=1
shift
fi
done
shell="$1"
if [ -z "$shell" ]; then
shell="$(basename "$SHELL")"
fi
resolve_link() {
$(type -p greadlink readlink | head -1) $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"
}
root="$(abs_dirname "$0")/.."
if [ -z "$print" ]; then
case "$shell" in
bash )
profile='~/.bash_profile'
;;
zsh )
profile='~/.zshrc'
;;
ksh )
profile='~/.profile'
;;
fish )
profile='~/.config/fish/config.fish'
;;
* )
profile='your profile'
;;
esac
{ echo "# Load pyenv automatically by adding"
echo "# the following to ${profile}:"
echo
echo 'eval "$(pyenv init -)"'
echo
} >&2
exit 1
fi
mkdir -p "${PYENV_ROOT}/"{shims,versions}
case "$shell" in
fish )
echo 'setenv PATH "'${PYENV_ROOT}'/shims"' '$PATH' ';'
;;
* )
echo 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"'
;;
esac
case "$shell" in
bash | zsh )
echo "source \"$root/completions/pyenv.${shell}\""
;;
fish )
echo ". \"$root/completions/pyenv.${shell}\";"
;;
esac
if [ -z "$no_rehash" ]; then
echo 'pyenv rehash 2>/dev/null'
fi
case "$shell" in
fish )
commands=(`pyenv-commands --fish`)
cat <<EOS
;function pyenv;
set -e command;
set command \$argv[1];
if [ (count \$argv) -gt 0 ];
set -e argv[1];
end;
switch "\$command";
case ${commands[*]};
eval (pyenv "fish-\$command" \$argv);
case '*';
command pyenv "\$command" \$argv;
end;
end;
EOS
;;
* )
commands=(`pyenv-commands --sh`)
IFS="|"
cat <<EOS
pyenv() {
typeset command
command="\$1"
if [ "\$#" -gt 0 ]; then
shift
fi
case "\$command" in
${commands[*]})
eval \`pyenv "sh-\$command" "\$@"\`;;
*)
command pyenv "\$command" "\$@";;
esac
}
EOS
;;
esac