diff options
author | Guillaume <g@bitimplosion.com> | 2016-12-28 16:02:11 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-28 16:02:11 +0000 |
commit | bf8afa62e0e788b5a6b3ad32cbf18bd6374fb92c (patch) | |
tree | 2e19db8da7ddc5168a1858f2aa9dd41e9f9c863c | |
parent | e33cb3f849dc32e5c0f083ac5f1394dc792b32a1 (diff) | |
parent | 84cf9821e256ee2458568e03a9548702b14af26b (diff) |
Merge pull request #1 from batisteo/virtualenv-envvar
Using WORKON_HOMEĀ and rename postload.sh
-rw-r--r-- | README.md | 15 | ||||
-rwxr-xr-x | venvworkon.sh | 36 |
2 files changed, 26 insertions, 25 deletions
@@ -19,13 +19,20 @@ will be printed instead. ## Where venvs are created When `workon` is called, venvs are created or loaded from the -`$HOME/.venvs` folder. +`$HOME/.venvs` folder by default. +To change this behavior, set the `WORKON_HOME` environment +variable before sourcing `venvworkon.sh`. -## Post-load script -If the file `$HOME/.venvs/<venv>/postload.sh` exists, it is -automatically sourced after the venv is loaded. This is useful +## Post-activate script +If the file `$HOME/.venvs/<venv>/postactivate.sh` exists, it is +automatically sourced after the venv is activated. This is useful to export environment variable such as `DJANGO_SETTINGS_MODULE`. +## Project directory +If `PROJECT_HOME` is set (e.g. `$HOME/Projects`) and there is +a project folder which match the environment name, venvworkon +change the current working directory to the project directory. + ## Why bother using this `virtualenvwrapper` is certainly much more feature-packed and useful than this. But this wrapper is handy for development and diff --git a/venvworkon.sh b/venvworkon.sh index 1da01bd..92890b6 100755 --- a/venvworkon.sh +++ b/venvworkon.sh @@ -1,30 +1,24 @@ workon() { - envroot="$HOME/.venv" + # Sets WORKON_HOME to default if not set already + test -z "$WORKON_HOME" && WORKON_HOME="$HOME/.venv" - if [ ! -e "$envroot" ] - then - mkdir -p "$envroot" - fi + # Creates WORKON_HOME directory if not exists + test ! -e "$WORKON_HOME" && mkdir -p $_ - if [ "$#" -lt "1" ] - then - ls "$envroot" - return - fi + # Quit if there is no arguments, while showing available venvs + test "$#" -lt "1" && ls "$WORKON_HOME"; return - envname=$1 + envdir="$WORKON_HOME/$1" - envdir="$envroot/$envname" - - if [ ! -e "$envdir" ] - then - pyvenv "$envdir" - fi + # Creates virtual env if doesn't exists + test ! -e "$envdir" && pyvenv $_ && echo "Virtual env created in $_" source "$envdir/bin/activate" + unset envdir # VIRTUAL_ENV is now set by bin/activate + + # Jumps to project directory if exists and PROJECT_HOME is set + test -d "$PROJECT_HOME/$(basename $VIRTUAL_ENV)" && cd $_ - if [ -e "$envdir/postload.sh" ] - then - source "$envdir/postload.sh" - fi + # Source postactivate.sh if exists in the virtual env + test -e "$VIRTUAL_ENV/postactivate.sh" && source $_ } |