diff options
Diffstat (limited to 'plugins/autoenv/autoenv.plugin.zsh')
-rw-r--r-- | plugins/autoenv/autoenv.plugin.zsh | 60 |
1 files changed, 44 insertions, 16 deletions
diff --git a/plugins/autoenv/autoenv.plugin.zsh b/plugins/autoenv/autoenv.plugin.zsh index 3c1b0fafc..bd03cf4b2 100644 --- a/plugins/autoenv/autoenv.plugin.zsh +++ b/plugins/autoenv/autoenv.plugin.zsh @@ -1,12 +1,39 @@ -# Activates autoenv or reports its failure +# Initialization: activate autoenv or report its absence () { +local d autoenv_dir install_locations if ! type autoenv_init >/dev/null; then - for d (~/.autoenv ~/.local/bin /usr/local/opt/autoenv /usr/local/bin); do + # Check if activate.sh is in $PATH + if (( $+commands[activate.sh] )); then + autoenv_dir="${commands[activate.sh]:h}" + fi + + # Locate autoenv installation + if [[ -z $autoenv_dir ]]; then + install_locations=( + ~/.autoenv + ~/.local/bin + /usr/local/opt/autoenv + /usr/local/bin + /usr/share/autoenv-git + ~/Library/Python/bin + ) + for d ( $install_locations ); do + if [[ -e $d/activate.sh ]]; then + autoenv_dir=$d + break + fi + done + fi + + # Look for Homebrew path as a last resort + if [[ -z "$autoenv_dir" ]] && (( $+commands[brew] )); then + d=$(brew --prefix)/opt/autoenv if [[ -e $d/activate.sh ]]; then autoenv_dir=$d - break fi - done + fi + + # Complain if autoenv is not installed if [[ -z $autoenv_dir ]]; then cat <<END >&2 -------- AUTOENV --------- @@ -17,6 +44,7 @@ In the meantime the autoenv plugin is DISABLED. END return 1 fi + # Load autoenv source $autoenv_dir/activate.sh fi } @@ -27,17 +55,17 @@ fi # It only performs an action if the requested virtualenv is not the current one. use_env() { - typeset venv - venv="$1" - if [[ "${VIRTUAL_ENV:t}" != "$venv" ]]; then - if workon | grep -q "$venv"; then - workon "$venv" - else - echo -n "Create virtualenv $venv now? (Yn) " - read answer - if [[ "$answer" == "Y" ]]; then - mkvirtualenv "$venv" - fi - fi + local venv + venv="$1" + if [[ "${VIRTUAL_ENV:t}" != "$venv" ]]; then + if workon | grep -q "$venv"; then + workon "$venv" + else + echo -n "Create virtualenv $venv now? (Yn) " + read answer + if [[ "$answer" == "Y" ]]; then + mkvirtualenv "$venv" + fi fi + fi } |