From 9dc84a6ee5c1f267a090e1f4d2b87f137d7d2ec7 Mon Sep 17 00:00:00 2001 From: Rory Grandin Date: Fri, 5 Aug 2016 15:22:31 +0200 Subject: [PATCH 1/6] Add support for postactivate and postdeactivate hooks. --- scripts/workon.bat | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/workon.bat b/scripts/workon.bat index b1d2cc3..7821327 100644 --- a/scripts/workon.bat +++ b/scripts/workon.bat @@ -71,4 +71,12 @@ if exist "%WORKON_HOME%\%VENV%\%VIRTUALENVWRAPPER_PROJECT_FILENAME%" ( ) ) +if exist "%WORKON_HOME%\%VENV%\Scripts\postactivate.bat" ( + call "%WORKON_HOME%\%VENV%\Scripts\postactivate.bat" +) + +if exist "%WORKON_HOME%\%VENV%\Scripts\postdeactivate.bat" ( + call "%WORKON_HOME%\%VENV%\Scripts\postdeactivate.bat" +) + :END From ef2c93cdbd713c8dd93f1c6dfc1f2d3a07e61178 Mon Sep 17 00:00:00 2001 From: Rory Grandin Date: Mon, 22 Aug 2016 10:01:11 +0200 Subject: [PATCH 2/6] If there is a deactivate script, it should be called just after calling deactivate. --- scripts/workon.bat | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/workon.bat b/scripts/workon.bat index 7821327..81b2452 100644 --- a/scripts/workon.bat +++ b/scripts/workon.bat @@ -35,8 +35,12 @@ if not "%1"=="" ( if defined VIRTUAL_ENV ( call "%VIRTUAL_ENV%\Scripts\deactivate.bat" + if exist "%VIRTUAL_ENV%\Scripts\postdeactivate.bat" ( + call "%VIRTUAL_ENV%\Scripts\postdeactivate.bat" + ) ) + pushd "%WORKON_HOME%" 2>NUL && popd if errorlevel 1 ( mkdir "%WORKON_HOME%" @@ -75,8 +79,4 @@ if exist "%WORKON_HOME%\%VENV%\Scripts\postactivate.bat" ( call "%WORKON_HOME%\%VENV%\Scripts\postactivate.bat" ) -if exist "%WORKON_HOME%\%VENV%\Scripts\postdeactivate.bat" ( - call "%WORKON_HOME%\%VENV%\Scripts\postdeactivate.bat" -) - :END From c49af1895d14a94a6e97c6a57804ce8c3d3cd513 Mon Sep 17 00:00:00 2001 From: David Fraser Date: Wed, 27 Dec 2017 16:52:57 +0200 Subject: [PATCH 3/6] Pull the postdeactivate script name into a variable before deactivate unsets `VIRTUAL_ENV` --- scripts/workon.bat | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/workon.bat b/scripts/workon.bat index 81b2452..aa593b3 100644 --- a/scripts/workon.bat +++ b/scripts/workon.bat @@ -34,10 +34,12 @@ if not "%1"=="" ( ) if defined VIRTUAL_ENV ( + SET "VIRTUAL_ENV_POSTDEACTIVATE=%VIRTUAL_ENV%\Scripts\postdeactivate.bat" call "%VIRTUAL_ENV%\Scripts\deactivate.bat" - if exist "%VIRTUAL_ENV%\Scripts\postdeactivate.bat" ( - call "%VIRTUAL_ENV%\Scripts\postdeactivate.bat" + if exist "%VIRTUAL_ENV_POSTDEACTIVATE%" ( + call "%VIRTUAL_ENV_POSTDEACTIVATE%" ) + SET VIRTUAL_ENV_POSTDEACTIVATE= ) From 901d304c6e70273cf7c66c599e19cca94178d7af Mon Sep 17 00:00:00 2001 From: David Fraser Date: Wed, 27 Dec 2017 16:56:11 +0200 Subject: [PATCH 4/6] Implement global postactivate (as done in pull request !64) --- scripts/workon.bat | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/workon.bat b/scripts/workon.bat index aa593b3..267cdce 100644 --- a/scripts/workon.bat +++ b/scripts/workon.bat @@ -77,6 +77,12 @@ if exist "%WORKON_HOME%\%VENV%\%VIRTUALENVWRAPPER_PROJECT_FILENAME%" ( ) ) +if defined VIRTUALENVWRAPPER_HOOK_DIR ( + if exist "%VIRTUALENVWRAPPER_HOOK_DIR%\postactivate.bat" ( + call "%VIRTUALENVWRAPPER_HOOK_DIR%\postactivate.bat" + ) +) + if exist "%WORKON_HOME%\%VENV%\Scripts\postactivate.bat" ( call "%WORKON_HOME%\%VENV%\Scripts\postactivate.bat" ) From ab7bcee1c84b7e04cfe6324fed6c795537513d5f Mon Sep 17 00:00:00 2001 From: David Fraser Date: Wed, 27 Dec 2017 16:58:16 +0200 Subject: [PATCH 5/6] Implement global postdeactivate (running after the local one, as done by virtualenvwrapper) --- scripts/workon.bat | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/workon.bat b/scripts/workon.bat index 267cdce..f1ae21a 100644 --- a/scripts/workon.bat +++ b/scripts/workon.bat @@ -40,6 +40,12 @@ if defined VIRTUAL_ENV ( call "%VIRTUAL_ENV_POSTDEACTIVATE%" ) SET VIRTUAL_ENV_POSTDEACTIVATE= + if defined VIRTUALENVWRAPPER_HOOK_DIR ( + if exist "%VIRTUALENVWRAPPER_HOOK_DIR%\postdeactivate.bat" ( + call "%VIRTUALENVWRAPPER_HOOK_DIR%\postdeactivate.bat" + ) + ) + ) From d821770fb316effa4dd97e3a633514a4778fb9ec Mon Sep 17 00:00:00 2001 From: David Fraser Date: Wed, 27 Dec 2017 17:00:14 +0200 Subject: [PATCH 6/6] Added notes on global and local `post(de)activate.bat` hooks --- README.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index f1be661..9481313 100644 --- a/README.rst +++ b/README.rst @@ -120,4 +120,6 @@ Convenience Commands Hooks ---------- -To run some commands after ``mkvirtualenv`` you can use hooks. First you need to define ``VIRTUALENVWRAPPER_HOOK_DIR`` variable. If it is set ``mkvirtualenv`` will run ``postmkvirtualenv.bat`` script from that directory. +To run some commands after ``mkvirtualenv`` you can use hooks. First you need to define ``VIRTUALENVWRAPPER_HOOK_DIR`` variable. If it is set ``mkvirtualenv`` will run ``postmkvirtualenv.bat`` script and ``workon`` and ``deactivate`` will run ``postactivate.bat`` and ``postdeactivate.bat`` scripts from that directory. + +To run some commands after ``workon`` or ``deactivate`` that are specific to a virtual environment, you can create ``postactivate.bat`` or ``postdeactivate.bat`` scripts in the virtual environment's ``Scripts`` directory