Обновление ohmyzsh
This commit is contained in:
38
zsh/plugins/virtualenvwrapper/README.md
Normal file
38
zsh/plugins/virtualenvwrapper/README.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Virtualenvwrapper plugin
|
||||
|
||||
This plugin loads Python's [virtualenvwrapper](https://virtualenvwrapper.readthedocs.io/en/latest/) shell tools.
|
||||
|
||||
To use it, add `virtualenvwrapper` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... virtualenvwrapper)
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
The plugin allows to automatically activate virtualenvs on cd into git repositories with a matching name:
|
||||
|
||||
```
|
||||
➜ github $ cd ansible
|
||||
(ansible) ➜ ansible git:(devel) $ cd docs
|
||||
(ansible) ➜ docs git:(devel) $ cd ..
|
||||
(ansible) ➜ ansible git:(devel) $ cd ..
|
||||
➜ github $
|
||||
```
|
||||
|
||||
We can override this by having a `.venv` file in the directory containing a differently named virtualenv:
|
||||
|
||||
```
|
||||
➜ github $ cat ansible/.venv
|
||||
myvirtualenv
|
||||
➜ github $ cd ansible
|
||||
(myvirtualenv) ➜ ansible git:(devel) $ cd ..
|
||||
➜ github $
|
||||
```
|
||||
|
||||
We can disable this behaviour by setting `DISABLE_VENV_CD=1` before Oh My Zsh is sourced:
|
||||
```zsh
|
||||
DISABLE_VENV_CD=1
|
||||
plugins=(... virtualenvwrapper)
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
```
|
||||
@@ -1,48 +1,31 @@
|
||||
virtualenvwrapper='virtualenvwrapper.sh'
|
||||
virtualenvwrapper_lazy='virtualenvwrapper_lazy.sh'
|
||||
function {
|
||||
# search in these locations for the init script:
|
||||
for virtualenvwrapper in $commands[virtualenvwrapper_lazy.sh] \
|
||||
$commands[virtualenvwrapper.sh] \
|
||||
/usr/share/virtualenvwrapper/virtualenvwrapper{_lazy,}.sh \
|
||||
/usr/local/bin/virtualenvwrapper{_lazy,}.sh \
|
||||
/etc/bash_completion.d/virtualenvwrapper \
|
||||
/usr/share/bash-completion/completions/virtualenvwrapper \
|
||||
$HOME/.local/bin/virtualenvwrapper.sh
|
||||
do
|
||||
if [[ -f "$virtualenvwrapper" ]]; then
|
||||
source "$virtualenvwrapper"
|
||||
return
|
||||
fi
|
||||
done
|
||||
print "[oh-my-zsh] virtualenvwrapper plugin: Cannot find virtualenvwrapper.sh.\n"\
|
||||
"Please install with \`pip install virtualenvwrapper\`" >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
if (( $+commands[$virtualenvwrapper_lazy] )); then
|
||||
function {
|
||||
setopt local_options
|
||||
unsetopt equals
|
||||
virtualenvwrapper=${${virtualenvwrapper_lazy}:c}
|
||||
source ${${virtualenvwrapper_lazy}:c}
|
||||
[[ -z "$WORKON_HOME" ]] && WORKON_HOME="$HOME/.virtualenvs"
|
||||
}
|
||||
elif (( $+commands[$virtualenvwrapper] )); then
|
||||
function {
|
||||
setopt local_options
|
||||
unsetopt equals
|
||||
source ${${virtualenvwrapper}:c}
|
||||
}
|
||||
elif [[ -f "/usr/local/bin/virtualenvwrapper.sh" ]]; then
|
||||
function {
|
||||
setopt local_options
|
||||
unsetopt equals
|
||||
virtualenvwrapper="/usr/local/bin/virtualenvwrapper.sh"
|
||||
source "/usr/local/bin/virtualenvwrapper.sh"
|
||||
}
|
||||
elif [[ -f "/etc/bash_completion.d/virtualenvwrapper" ]]; then
|
||||
function {
|
||||
setopt local_options
|
||||
unsetopt equals
|
||||
virtualenvwrapper="/etc/bash_completion.d/virtualenvwrapper"
|
||||
source "/etc/bash_completion.d/virtualenvwrapper"
|
||||
}
|
||||
else
|
||||
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
|
||||
if [[ $? -eq 0 ]] && ! type workon &>/dev/null; then
|
||||
print "[oh-my-zsh] virtualenvwrapper plugin: shell function 'workon' not defined.\n"\
|
||||
"Please check ${virtualenvwrapper}" >&2
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ "$WORKON_HOME" == "" ]]; then
|
||||
print "[oh-my-zsh] \$WORKON_HOME is not defined so plugin virtualenvwrapper will not work" >&2
|
||||
return
|
||||
if [[ -z "$WORKON_HOME" ]]; then
|
||||
WORKON_HOME="$HOME/.virtualenvs"
|
||||
fi
|
||||
|
||||
if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
|
||||
@@ -77,6 +60,12 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
|
||||
else
|
||||
ENV_NAME=""
|
||||
fi
|
||||
|
||||
if [[ -n $CD_VIRTUAL_ENV && "$ENV_NAME" != "$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
|
||||
if [[ "$ENV_NAME" != "" ]]; then
|
||||
# Activate the environment only if it is not already active
|
||||
if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then
|
||||
@@ -86,17 +75,12 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
|
||||
source $ENV_NAME/bin/activate && export CD_VIRTUAL_ENV="$ENV_NAME"
|
||||
fi
|
||||
fi
|
||||
elif [[ -n $CD_VIRTUAL_ENV && -n $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
|
||||
fi
|
||||
}
|
||||
|
||||
# Append workon_cwd to the chpwd_functions array, so it will be called on cd
|
||||
# http://zsh.sourceforge.net/Doc/Release/Functions.html
|
||||
if ! (( $chpwd_functions[(I)workon_cwd] )); then
|
||||
chpwd_functions+=(workon_cwd)
|
||||
fi
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook chpwd workon_cwd
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user