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