Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Ohmyzsh
Commits
ef4e2aa2
Commit
ef4e2aa2
authored
Dec 02, 2012
by
Robby Russell
Browse files
Merge pull request #1293 from cenkalti/master
Look virtualenvwrapper plugin in PATH
parents
fdf3a399
d5e5b7ee
Changes
1
Hide whitespace changes
Inline
Side-by-side
plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
View file @
ef4e2aa2
WRAPPER_FOUND
=
0
wrapsource
=
`
which virtualenvwrapper.sh
`
for
wrapsource
in
"/usr/bin/virtualenvwrapper.sh"
"/usr/local/bin/virtualenvwrapper.sh"
"/etc/bash_completion.d/virtualenvwrapper"
;
do
if
[[
-e
$wrapsource
]]
;
then
WRAPPER_FOUND
=
1
source
$wrapsource
if
[[
!
$DISABLE_VENV_CD
-eq
1
]]
;
then
if
[[
-f
"
$wrapsource
"
]]
;
then
# Automatically activate Git projects' virtual environments based on the
source
$wrapsource
# 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
}
# New cd function that does the virtualenv magic
if
[[
!
$DISABLE_VENV_CD
-eq
1
]]
;
then
function
cd
{
# Automatically activate Git projects' virtual environments based on the
builtin cd
"
$@
"
&&
workon_cwd
# 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
fi
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
fi
done
else
print
"zsh virtualenvwrapper plugin: Cannot find virtualenvwrapper.sh. Please install with
\`
pip install virtualenvwrapper
\`
."
if
[
$WRAPPER_FOUND
-eq
0
]
;
then
print
"zsh virtualenvwrapper plugin: Couldn't activate virtualenvwrapper. Please run
\`
pip install virtualenvwrapper
\`
."
fi
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment