From 4cadbcd23503e3aa1f29008b6748c82bd308dce6 Mon Sep 17 00:00:00 2001 From: Alan Date: Wed, 8 May 2019 08:48:28 +0100 Subject: [PATCH] Add plugin for pipenv (#6698) - Add completion for pipenv - Auto activate and deactivate for pipenv shell - Add aliases for the most common pipenv commands --- plugins/pipenv/README.md | 28 +++++++++++++++++++++ plugins/pipenv/pipenv.plugin.zsh | 42 ++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 plugins/pipenv/README.md create mode 100644 plugins/pipenv/pipenv.plugin.zsh diff --git a/plugins/pipenv/README.md b/plugins/pipenv/README.md new file mode 100644 index 000000000..ab1c1e442 --- /dev/null +++ b/plugins/pipenv/README.md @@ -0,0 +1,28 @@ +# Pipenv + +## Installation +In your `.zshrc` file, add `pipenv` to the plugins section + +``` +plugins=(... pipenv ...) +``` + +## Features +This plugin provides some features to simplify the use of Pipenv while working on ZSH. +- Adds completion for pipenv +- Auto activates and deactivates pipenv shell +- Adds short aliases for common pipenv commands + - `pch` is aliased to `pipenv check` + - `pcl` is aliased to `pipenv clean` + - `pgr` is aliased to `pipenv graph` + - `pi` is aliased to `pipenv install` + - `pidev` is aliased to `pipenv install --dev` + - `pl` is aliased to `pipenv lock` + - `po` is aliased to `pipenv open` + - `prun` is aliased to `pipenv run` + - `psh` is aliased to `pipenv shell` + - `psy` is aliased to `pipenv sync` + - `pu` is aliased to `pipenv uninstall` + - `pwh` is aliased to `pipenv --where` + - `pvenv` is aliased to `pipenv --venv` + - `ppy` is aliased to `pipenv --py` diff --git a/plugins/pipenv/pipenv.plugin.zsh b/plugins/pipenv/pipenv.plugin.zsh new file mode 100644 index 000000000..0a5dc56a4 --- /dev/null +++ b/plugins/pipenv/pipenv.plugin.zsh @@ -0,0 +1,42 @@ +# Pipenv completion +_pipenv() { + eval $(env COMMANDLINE="${words[1,$CURRENT]}" _PIPENV_COMPLETE=complete-zsh pipenv) +} +compdef _pipenv pipenv + +# Automatic pipenv shell activation/deactivation +_togglePipenvShell() { + # deactivate shell if Pipfile doesn't exist and not in a subdir + if [[ ! -a "$PWD/Pipfile" ]]; then + if [[ "$PIPENV_ACTIVE" == 1 ]]; then + if [[ "$PWD" != "$pipfile_dir"* ]]; then + exit + fi + fi + fi + + # activate the shell if Pipfile exists + if [[ "$PIPENV_ACTIVE" != 1 ]]; then + if [[ -a "$PWD/Pipfile" ]]; then + export pipfile_dir="$PWD" + pipenv shell + fi + fi +} +chpwd_functions+=(_togglePipenvShell) + +# Aliases +alias pch="pipenv check" +alias pcl="pipenv clean" +alias pgr="pipenv graph" +alias pi="pipenv install" +alias pidev="pipenv install --dev" +alias pl="pipenv lock" +alias po="pipenv open" +alias prun="pipenv run" +alias psh="pipenv shell" +alias psy="pipenv sync" +alias pu="pipenv uninstall" +alias pwh="pipenv --where" +alias pvenv="pipenv --venv" +alias ppy="pipenv --py"