2012-06-09 09:04:58 +08:00
WRAPPER_FOUND = 0
2012-08-25 14:51:58 +08:00
for wrapsource in "/usr/bin/virtualenvwrapper.sh" "/usr/local/bin/virtualenvwrapper.sh" "/usr/local/share/python/virtualenvwrapper.sh" "/etc/bash_completion.d/virtualenvwrapper" ; do
2012-06-09 09:04:58 +08:00
if [ [ -e $wrapsource ] ] ; then
WRAPPER_FOUND = 1
source $wrapsource
if [ [ ! $DISABLE_VENV_CD -eq 1 ] ] ; then
# Automatically activate Git projects' virtual environments based on the
# directory name of the project. Virtual environment name can be overridden
# by placing a .venv file in the project root with a virtualenv name in it
function workon_cwd {
# Check that this is a Git repo
2012-06-18 22:41:19 +08:00
PROJECT_ROOT = ` git rev-parse --show-toplevel 2> /dev/null`
2012-06-09 09:04:58 +08:00
if ( ( $? = = 0 ) ) ; then
2012-06-18 22:41:19 +08:00
# Check for virtualenv name override
2012-06-09 09:04:58 +08:00
ENV_NAME = ` basename " $PROJECT_ROOT " `
if [ [ -f " $PROJECT_ROOT /.venv " ] ] ; then
ENV_NAME = ` cat " $PROJECT_ROOT /.venv " `
fi
# Activate the environment only if it is not already active
if [ [ " $VIRTUAL_ENV " != " $WORKON_HOME / $ENV_NAME " ] ] ; then
if [ [ -e " $WORKON_HOME / $ENV_NAME /bin/activate " ] ] ; then
workon " $ENV_NAME " && export CD_VIRTUAL_ENV = " $ENV_NAME "
fi
fi
elif [ $CD_VIRTUAL_ENV ] ; then
# We've just left the repo, deactivate the environment
# Note: this only happens if the virtualenv was activated automatically
deactivate && unset CD_VIRTUAL_ENV
fi
2012-06-18 22:41:19 +08:00
unset PROJECT_ROOT
2012-06-09 09:04:58 +08:00
}
# New cd function that does the virtualenv magic
function cd {
builtin cd " $@ " && workon_cwd
}
fi
break
fi
done
if [ $WRAPPER_FOUND -eq 0 ] ; then
print "zsh virtualenvwrapper plugin: Couldn't activate virtualenvwrapper. Please run \`pip install virtualenvwrapper\`."
fi