diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/pyenv/pyenv.plugin.zsh | 48 | 
1 files changed, 33 insertions, 15 deletions
| diff --git a/plugins/pyenv/pyenv.plugin.zsh b/plugins/pyenv/pyenv.plugin.zsh index bcf80a6a2..f55701900 100644 --- a/plugins/pyenv/pyenv.plugin.zsh +++ b/plugins/pyenv/pyenv.plugin.zsh @@ -1,3 +1,22 @@ +pyenv_config_warning() { +  local reason="$1" +  local pyenv_root="${PYENV_ROOT/#$HOME/\$HOME}" +  cat >&2 <<EOF +Found pyenv, but it is badly configured ($reason). pyenv might not +work correctly for non-interactive shells (for example, when run from a script). +${(%):-"%B%F{yellow}"} +To fix this message, add these lines to the '.profile' and '.zprofile' files +in your home directory: +${(%):-"%f"} +export PYENV_ROOT="$pyenv_root" +export PATH="\$PYENV_ROOT/bin:\$PATH" +eval "\$(pyenv init --path)" +${(%):-"%F{yellow}"} +You'll need to restart your user session for the changes to take effect.${(%):-%b%f} +For more information go to https://github.com/pyenv/pyenv/#installation. +EOF +} +  # This plugin loads pyenv into the current shell and provides prompt info via  # the 'pyenv_prompt_info' function. Also loads pyenv-virtualenv if available. @@ -30,35 +49,33 @@ if [[ $FOUND_PYENV -ne 1 ]]; then    # If we found pyenv, load it but show a caveat about non-interactive shells    if [[ $FOUND_PYENV -eq 1 ]]; then -    cat >&2 <<EOF -Found pyenv, but it is badly configured. pyenv might not work for -non-interactive shells (for example, when run from a script). -${bold_color} -To fix this message, add these lines to the '.profile' and '.zprofile' files -in your home directory: - -export PYENV_ROOT="${dir/#$HOME/\$HOME}" -export PATH="\$PYENV_ROOT/bin:\$PATH" -eval "\$(pyenv init --path)" - -You'll need to restart your user session for the changes to take effect.${reset_color} -For more info go to https://github.com/pyenv/pyenv/#installation. -EOF -      # Configuring in .zshrc only makes pyenv available for interactive shells      export PYENV_ROOT="$dir"      export PATH="$PYENV_ROOT/bin:$PATH"      eval "$(pyenv init --path)" + +    # Show warning due to bad pyenv configuration +    pyenv_config_warning 'pyenv command not found in $PATH'    fi  fi  if [[ $FOUND_PYENV -eq 1 ]]; then +  # Setup $PYENV_ROOT if not already set    if [[ -z "$PYENV_ROOT" ]]; then      export PYENV_ROOT="$(pyenv root)" +    pyenv_config_warning 'missing $PYENV_ROOT' +  fi + +  # Add pyenv shims to $PATH if not already added +  if [[ -z "${path[(Re)$PYENV_ROOT/shims]}" ]]; then +    eval "$(pyenv init --path)" +    pyenv_config_warning 'missing pyenv shims in $PATH'    fi +  # Load pyenv    eval "$(pyenv init - --no-rehash zsh)" +  # If pyenv-virtualenv exists, load it    if [[ -d "$PYENV_ROOT/plugins/pyenv-virtualenv" ]]; then      eval "$(pyenv virtualenv-init - zsh)"    fi @@ -74,3 +91,4 @@ else  fi  unset FOUND_PYENV pyenvdirs dir +unfunction pyenv_config_warning | 
