浏览代码

pyenv: search the pyenv command if not found (#6811)

Marc Cornellà 6 年之前
父节点
当前提交
0aa645f803
共有 1 个文件被更改,包括 25 次插入1 次删除
  1. 25 1
      plugins/pyenv/pyenv.plugin.zsh

+ 25 - 1
plugins/pyenv/pyenv.plugin.zsh

@@ -1,7 +1,29 @@
 # This plugin loads pyenv into the current shell and provides prompt info via
 # the 'pyenv_prompt_info' function. Also loads pyenv-virtualenv if available.
 
-if (( $+commands[pyenv] )); then
+FOUND_PYENV=$+commands[pyenv]
+
+if [[ $FOUND_PYENV -ne 1 ]]; then
+    pyenvdirs=("$HOME/.pyenv" "/usr/local/pyenv" "/opt/pyenv")
+    for dir in $pyenvdirs; do
+        if [[ -d $dir/bin ]]; then
+            export PATH="$PATH:$dir/bin"
+            FOUND_PYENV=1
+            break
+        fi
+    done
+fi
+
+if [[ $FOUND_PYENV -ne 1 ]]; then
+    if (( $+commands[brew] )) && dir=$(brew --prefix pyenv 2>/dev/null); then
+        if [[ -d $dir/bin ]]; then
+            export PATH="$PATH:$dir/bin"
+            FOUND_PYENV=1
+        fi
+    fi
+fi
+
+if [[ $FOUND_PYENV -eq 1 ]]; then
     eval "$(pyenv init - zsh)"
     if (( $+commands[pyenv-virtualenv-init] )); then
         eval "$(pyenv virtualenv-init - zsh)"
@@ -15,3 +37,5 @@ else
         echo "system: $(python -V 2>&1 | cut -f 2 -d ' ')"
     }
 fi
+
+unset FOUND_PYENV dir