mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-12-12 20:21:02 +01:00
autoenv: look in additional installation locations, redo logic
Fixes #4681 Co-authored-by: Marc Cornellà <marc.cornella@live.com>
This commit is contained in:
parent
610b2529d2
commit
58e38155fc
2 changed files with 51 additions and 17 deletions
|
@ -7,8 +7,14 @@ To use it, add `autoenv` to the plugins array in your zshrc file:
|
||||||
```zsh
|
```zsh
|
||||||
plugins=(... autoenv)
|
plugins=(... autoenv)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
* `use_env()`: creates and/or activates a virtualenv. For use in `.env` files.
|
||||||
|
See the source code for details.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
In order to make this work, you will need to have the autoenv installed.
|
In order to make this work, you will need to have the autoenv installed.
|
||||||
|
|
||||||
More info on the usage and install: https://github.com/inishchith/autoenv
|
More info on the usage and install at [the project's homepage](https://github.com/inishchith/autoenv).
|
||||||
|
|
|
@ -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
|
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
|
if [[ -e $d/activate.sh ]]; then
|
||||||
autoenv_dir=$d
|
autoenv_dir=$d
|
||||||
break
|
|
||||||
fi
|
fi
|
||||||
done
|
fi
|
||||||
|
|
||||||
|
# Complain if autoenv is not installed
|
||||||
if [[ -z $autoenv_dir ]]; then
|
if [[ -z $autoenv_dir ]]; then
|
||||||
cat <<END >&2
|
cat <<END >&2
|
||||||
-------- AUTOENV ---------
|
-------- AUTOENV ---------
|
||||||
|
@ -17,6 +44,7 @@ In the meantime the autoenv plugin is DISABLED.
|
||||||
END
|
END
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
# Load autoenv
|
||||||
source $autoenv_dir/activate.sh
|
source $autoenv_dir/activate.sh
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -27,17 +55,17 @@ fi
|
||||||
# It only performs an action if the requested virtualenv is not the current one.
|
# It only performs an action if the requested virtualenv is not the current one.
|
||||||
|
|
||||||
use_env() {
|
use_env() {
|
||||||
typeset venv
|
local venv
|
||||||
venv="$1"
|
venv="$1"
|
||||||
if [[ "${VIRTUAL_ENV:t}" != "$venv" ]]; then
|
if [[ "${VIRTUAL_ENV:t}" != "$venv" ]]; then
|
||||||
if workon | grep -q "$venv"; then
|
if workon | grep -q "$venv"; then
|
||||||
workon "$venv"
|
workon "$venv"
|
||||||
else
|
else
|
||||||
echo -n "Create virtualenv $venv now? (Yn) "
|
echo -n "Create virtualenv $venv now? (Yn) "
|
||||||
read answer
|
read answer
|
||||||
if [[ "$answer" == "Y" ]]; then
|
if [[ "$answer" == "Y" ]]; then
|
||||||
mkvirtualenv "$venv"
|
mkvirtualenv "$venv"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue