feat(poetry-env): create plugin (#11069)
parent
350427dea2
commit
1cc32be5f6
2 changed files with 37 additions and 0 deletions
@ -0,0 +1,10 @@ |
||||
# Poetry Environment Plugin |
||||
|
||||
This plugin automatically changes poetry environment when you cd into or out of the project directory. |
||||
Note: Script looks for pyproject.toml file to determine poetry if its a poetry environment |
||||
|
||||
To use it, add `poetry-env` to the plugins array in your zshrc file: |
||||
|
||||
```zsh |
||||
plugins=(... poetry-env) |
||||
``` |
||||
@ -0,0 +1,27 @@ |
||||
# Automatic poetry environment activation/deactivation |
||||
_togglePoetryShell() { |
||||
# deactivate environment if pyproject.toml doesn't exist and not in a subdir |
||||
if [[ ! -f "$PWD/pyproject.toml" ]] ; then |
||||
if [[ "$poetry_active" == 1 ]]; then |
||||
if [[ "$PWD" != "$poetry_dir"* ]]; then |
||||
export poetry_active=0 |
||||
deactivate |
||||
return |
||||
fi |
||||
fi |
||||
fi |
||||
|
||||
# activate the environment if pyproject.toml exists |
||||
if [[ "$poetry_active" != 1 ]]; then |
||||
if [[ -f "$PWD/pyproject.toml" ]]; then |
||||
if grep -q 'tool.poetry' "$PWD/pyproject.toml"; then |
||||
export poetry_active=1 |
||||
export poetry_dir="$PWD" |
||||
source "$(poetry env info --path)/bin/activate" |
||||
fi |
||||
fi |
||||
fi |
||||
} |
||||
autoload -U add-zsh-hook |
||||
add-zsh-hook chpwd _togglePoetryShell |
||||
_togglePoetryShell |
||||
Loading…
Reference in new issue