From 7b478d75a3a0db466e78b6e46a0e468d64354618 Mon Sep 17 00:00:00 2001 From: epelletier Date: Thu, 21 May 2015 17:34:24 +0200 Subject: Detect the .venv in any parent directory of the current directory --- plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'plugins/virtualenvwrapper') diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index 5faa1a823..b3a3b56d5 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -29,8 +29,11 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then if [ ! $WORKON_CWD ]; then WORKON_CWD=1 # Check if this is a Git repo - PROJECT_ROOT=`git rev-parse --show-toplevel 2> /dev/null` - if (( $? != 0 )); then + PROJECT_ROOT=`pwd` + while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" ]]; do + PROJECT_ROOT=`realpath $PROJECT_ROOT/..` + done + if [[ "$PROJECT_ROOT" == "/" ]]; then PROJECT_ROOT="." fi # Check for virtualenv name override -- cgit v1.2.3-70-g09d2 From d0b690b584fa48946cfd93014aa6033ec0cc7fc3 Mon Sep 17 00:00:00 2001 From: Tommy Wang Date: Wed, 10 Jun 2015 10:01:38 -0500 Subject: use local options to set no_equals before sourcing bash completion script --- plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'plugins/virtualenvwrapper') diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index 5faa1a823..b2c804edb 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -1,10 +1,18 @@ virtualenvwrapper='virtualenvwrapper.sh' if (( $+commands[$virtualenvwrapper] )); then - source ${${virtualenvwrapper}:c} + function { + setopt local_options + unsetopt equals + source ${${virtualenvwrapper}:c} + } elif [[ -f "/etc/bash_completion.d/virtualenvwrapper" ]]; then - virtualenvwrapper="/etc/bash_completion.d/virtualenvwrapper" - source "/etc/bash_completion.d/virtualenvwrapper" + function { + setopt local_options + unsetopt equals + virtualenvwrapper="/etc/bash_completion.d/virtualenvwrapper" + source "/etc/bash_completion.d/virtualenvwrapper" + } else print "zsh virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}.\n"\ "Please install with \`pip install virtualenvwrapper\`" >&2 -- cgit v1.2.3-70-g09d2 From c1f1f91daad68fa000900dc647157bbfdb2b603f Mon Sep 17 00:00:00 2001 From: Andrew Janke Date: Mon, 29 Jun 2015 18:55:58 -0400 Subject: virtualenvwrapper: Replace "realpath" with portable zsh-native `:A` and `:h` modifiers --- plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'plugins/virtualenvwrapper') diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index 9fd0d3d8f..f5f37ff6f 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -30,16 +30,17 @@ if [[ "$WORKON_HOME" == "" ]]; then fi if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then - # Automatically activate Git projects's virtual environments based on the + # 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 { if [ ! $WORKON_CWD ]; then WORKON_CWD=1 # Check if this is a Git repo - PROJECT_ROOT=`pwd` + # Get absolute path, resolving symlinks + PROJECT_ROOT="${PWD:A}" while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" ]]; do - PROJECT_ROOT=`realpath $PROJECT_ROOT/..` + PROJECT_ROOT="${PROJECT_ROOT:h}" done if [[ "$PROJECT_ROOT" == "/" ]]; then PROJECT_ROOT="." @@ -50,7 +51,7 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]];then ENV_NAME="$PROJECT_ROOT/.venv" elif [[ "$PROJECT_ROOT" != "." ]]; then - ENV_NAME=`basename "$PROJECT_ROOT"` + ENV_NAME="${PROJECT_ROOT:t}" else ENV_NAME="" fi -- cgit v1.2.3-70-g09d2 From f73e642e2265601b705b6aa9d9f71878ca98644a Mon Sep 17 00:00:00 2001 From: Andrew Janke Date: Thu, 2 Jul 2015 21:42:32 -0400 Subject: virtualenvwrapper: treat git repos as project roots again (instead of requiring a .venv customization directory) Change error output to more conventional OMZ format, so it's clear the plugin is for oh-my-zsh and not base zsh. Use `local` variables instead of manual unsetting. --- .../virtualenvwrapper/virtualenvwrapper.plugin.zsh | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'plugins/virtualenvwrapper') diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index f5f37ff6f..c40ca86ac 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -14,32 +14,38 @@ elif [[ -f "/etc/bash_completion.d/virtualenvwrapper" ]]; then source "/etc/bash_completion.d/virtualenvwrapper" } else - print "zsh virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}.\n"\ + print "[oh-my-zsh] virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}.\n"\ "Please install with \`pip install virtualenvwrapper\`" >&2 return fi if ! type workon &>/dev/null; then - print "zsh virtualenvwrapper plugin: shell function 'workon' not defined.\n"\ + print "[oh-my-zsh] virtualenvwrapper plugin: shell function 'workon' not defined.\n"\ "Please check ${virtualenvwrapper}" >&2 return fi if [[ "$WORKON_HOME" == "" ]]; then - print "\$WORKON_HOME is not defined so ZSH plugin virtualenvwrapper will not work" >&2 + print "[oh-my-zsh] \$WORKON_HOME is not defined so plugin virtualenvwrapper will not work" >&2 return fi if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then - # Automatically activate Git projects' virtual environments based on the + # Automatically activate Git projects or other customized virtualenvwrapper projects 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 + # by placing a .venv file in the project root with a virtualenv name in it. function workon_cwd { - if [ ! $WORKON_CWD ]; then - WORKON_CWD=1 + if [[ -z "$WORKON_CWD" ]]; then + local WORKON_CWD=1 # Check if this is a Git repo + local GIT_REPO_ROOT="" + local GIT_TOPLEVEL=$(git rev-parse --show-toplevel 2> /dev/null) + if [[ $? == 0 ]]; then + GIT_REPO_ROOT="$GIT_TOPLEVEL" + fi # Get absolute path, resolving symlinks - PROJECT_ROOT="${PWD:A}" - while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" ]]; do + local PROJECT_ROOT="${PWD:A}" + while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" \ + && ! -d "$PROJECT_ROOT/.git" && "$PROJECT_ROOT" != "$GIT_REPO_ROOT" ]]; do PROJECT_ROOT="${PROJECT_ROOT:h}" done if [[ "$PROJECT_ROOT" == "/" ]]; then @@ -47,7 +53,7 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then fi # Check for virtualenv name override if [[ -f "$PROJECT_ROOT/.venv" ]]; then - ENV_NAME=`cat "$PROJECT_ROOT/.venv"` + ENV_NAME=`cat "$PROJECT_ROOT/.venv"` elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]];then ENV_NAME="$PROJECT_ROOT/.venv" elif [[ "$PROJECT_ROOT" != "." ]]; then @@ -69,8 +75,6 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then # Note: this only happens if the virtualenv was activated automatically deactivate && unset CD_VIRTUAL_ENV fi - unset PROJECT_ROOT - unset WORKON_CWD fi } -- cgit v1.2.3-70-g09d2 From ccb0ae57207b1701c3187faf49c417fb0a902f58 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Fri, 7 Aug 2015 22:45:46 +0200 Subject: Add quotes to support folders with whitespace --- plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'plugins/virtualenvwrapper') diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index c40ca86ac..6cd30732e 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -38,7 +38,7 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then local WORKON_CWD=1 # Check if this is a Git repo local GIT_REPO_ROOT="" - local GIT_TOPLEVEL=$(git rev-parse --show-toplevel 2> /dev/null) + local GIT_TOPLEVEL="$(git rev-parse --show-toplevel 2> /dev/null)" if [[ $? == 0 ]]; then GIT_REPO_ROOT="$GIT_TOPLEVEL" fi @@ -53,7 +53,7 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then fi # Check for virtualenv name override if [[ -f "$PROJECT_ROOT/.venv" ]]; then - ENV_NAME=`cat "$PROJECT_ROOT/.venv"` + ENV_NAME="$(cat "$PROJECT_ROOT/.venv")" elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]];then ENV_NAME="$PROJECT_ROOT/.venv" elif [[ "$PROJECT_ROOT" != "." ]]; then -- cgit v1.2.3-70-g09d2