diff options
| author | Cenk Alti <cenkalti@gmail.com> | 2012-08-25 10:26:00 +0300 | 
|---|---|---|
| committer | Cenk Alti <cenkalti@gmail.com> | 2012-08-25 10:27:05 +0300 | 
| commit | d5e5b7ee5adaf74afa96cae00260c50581d8f46f (patch) | |
| tree | 70e3f4f70b886f2a89de0b543a13fce744b1899b /plugins/virtualenvwrapper | |
| parent | 6f92745761afc000b54bd782c7f3bcc0733302f7 (diff) | |
| download | zsh-d5e5b7ee5adaf74afa96cae00260c50581d8f46f.tar.gz zsh-d5e5b7ee5adaf74afa96cae00260c50581d8f46f.tar.bz2 zsh-d5e5b7ee5adaf74afa96cae00260c50581d8f46f.zip | |
search virtualenvwrapper.sh in PATH
Diffstat (limited to 'plugins/virtualenvwrapper')
| -rw-r--r-- | plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 76 | 
1 files changed, 35 insertions, 41 deletions
| diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index 8506624b5..a5abb77c3 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -1,46 +1,40 @@ -WRAPPER_FOUND=0 -for wrapsource in "/usr/bin/virtualenvwrapper.sh" "/usr/local/bin/virtualenvwrapper.sh" "/usr/local/share/python/virtualenvwrapper.sh" "/etc/bash_completion.d/virtualenvwrapper" ; do -  if [[ -e $wrapsource ]] ; then -    WRAPPER_FOUND=1 -    source $wrapsource +wrapsource=`which virtualenvwrapper.sh` -    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 -          PROJECT_ROOT=`git rev-parse --show-toplevel 2> /dev/null` -          if (( $? == 0 )); then -              # Check for virtualenv name override -              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 -          unset PROJECT_ROOT -      } +if [[ -f "$wrapsource" ]]; then +  source $wrapsource -      # New cd function that does the virtualenv magic -      function cd { -          builtin cd "$@" && workon_cwd -      } -    fi +  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 +        PROJECT_ROOT=`git rev-parse --show-toplevel 2> /dev/null` +        if (( $? == 0 )); then +            # Check for virtualenv name override +            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 +        unset PROJECT_ROOT +    } -    break +    # New cd function that does the virtualenv magic +    function cd { +        builtin cd "$@" && workon_cwd +    }    fi -done - -if [ $WRAPPER_FOUND -eq 0 ] ; then -  print "zsh virtualenvwrapper plugin: Couldn't activate virtualenvwrapper. Please run \`pip install virtualenvwrapper\`." +else +  print "zsh virtualenvwrapper plugin: Cannot find virtualenvwrapper.sh. Please install with \`pip install virtualenvwrapper\`."  fi | 
