Changed .bashrc to activate virtualenv environments on entering a directory and deact...
authorDavid Kerkeslager <kerkeslager@gmail.com>
Mon, 18 Aug 2014 21:06:41 +0000 (17:06 -0400)
committerDavid Kerkeslager <david.kerkeslager@globalpovertyproject.com>
Tue, 4 Aug 2015 15:01:20 +0000 (15:01 +0000)
.bashrc

diff --git a/.bashrc b/.bashrc
index 2734999..08021f5 100644 (file)
--- a/.bashrc
+++ b/.bashrc
@@ -57,7 +57,7 @@ fi
 
 # Put $HOME/Library/Haskell/bin on the path. Installing cabal doesn't
 # automatically put installed packages on the path.
-if [-d $HOME/Library/Haskell/bin ]; then
+if [ -d $HOME/Library/Haskell/bin ]; then
     PATH="$HOME/Library/Haskell/bin:$PATH"
     export PATH
 fi
@@ -86,3 +86,33 @@ fi
 if [ $TERM != screen ]; then
        screen
 fi
+
+# Gets a directory named .env if it exists in the currend directory or any of its parents
+get_env() {
+    if [ -d "$1/.env" ] ; then
+        echo "$1/.env"
+    else
+        if [ -d "$1/.." ] ; then
+            get_env "$1/.."
+        fi
+    fi
+}
+
+on_prompt() {
+    # Load a virtualenv environment if it exists in a file named .env
+    env_folder=$(get_env $(pwd))
+
+    if [ -d "$env_folder" ] ; then
+        if [[ $VIRTUAL_ENV != $env_folder ]] ; then
+            echo "Activating env '$env_folder'"
+            source "$env_folder/bin/activate"
+        fi
+    else
+        if [ -d "$VIRTUAL_ENV" ] ; then
+            deactivate
+        fi
+    fi
+}
+
+# Call on_prompt() every time the command prompt executes
+PROMPT_COMMAND=on_prompt