- #!/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="$(ps c -p "$PPID" -o 'ucomm=' 2>/dev/null || true)"
- shell="${shell##-}"
- shell="${shell%% *}"
- shell="$(basename "${shell:-$SHELL}")"
- fi
-
- READLINK=$(type -p greadlink readlink | head -1)
- if [ -z "$READLINK" ]; then
- echo "pyenv: 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"
- }
-
- 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
- case "$shell" in
- fish )
- echo 'status --is-interactive; and . (pyenv init -|psub)'
- ;;
- * )
- echo 'eval "$(pyenv init -)"'
- ;;
- esac
- echo
- } >&2
-
- exit 1
- fi
-
- mkdir -p "${PYENV_ROOT}/"{shims,versions}
-
- if [[ ":${PATH}:" != *:"${PYENV_ROOT}/shims":* ]]; then
- case "$shell" in
- fish )
- echo "setenv PATH '${PYENV_ROOT}/shims' \$PATH"
- ;;
- * )
- echo 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"'
- ;;
- esac
- fi
-
- case "$shell" in
- fish )
- echo "setenv PYENV_SHELL $shell"
- ;;
- * )
- echo "export PYENV_SHELL=$shell"
- ;;
- esac
-
- completion="${root}/completions/pyenv.${shell}"
- if [ -r "$completion" ]; then
- case "$shell" in
- fish ) echo ". '$completion'" ;;
- * ) echo "source '$completion'" ;;
- esac
- fi
-
- if [ -z "$no_rehash" ]; then
- echo 'pyenv rehash 2>/dev/null'
- fi
-
- commands=(`pyenv-commands --sh`)
- case "$shell" in
- fish )
- cat <<EOS
- function pyenv
- set command \$argv[1]
- set -e argv[1]
-
- switch "\$command"
- case ${commands[*]}
- eval (pyenv "sh-\$command" \$argv)
- case '*'
- command pyenv "\$command" \$argv
- end
- end
- EOS
- ;;
- ksh )
- cat <<EOS
- function pyenv {
- typeset command
- EOS
- ;;
- * )
- cat <<EOS
- pyenv() {
- local command
- EOS
- ;;
- esac
-
- if [ "$shell" != "fish" ]; then
- IFS="|"
- cat <<EOS
- command="\$1"
- if [ "\$#" -gt 0 ]; then
- shift
- fi
-
- case "\$command" in
- ${commands[*]})
- eval "\`pyenv "sh-\$command" "\$@"\`";;
- *)
- command pyenv "\$command" "\$@";;
- esac
- }
- EOS
- fi
|