| 
									
										
										
										
											2014-03-05 12:58:18 +00:00
										 |  |  | virtualenvwrapper='virtualenvwrapper.sh' | 
					
						
							| 
									
										
										
										
											2018-05-26 19:44:49 +01:00
										 |  |  | virtualenvwrapper_lazy='virtualenvwrapper_lazy.sh' | 
					
						
							| 
									
										
										
										
											2013-11-22 11:48:13 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-26 19:44:49 +01:00
										 |  |  | if (( $+commands[$virtualenvwrapper_lazy] )); then | 
					
						
							|  |  |  |   function { | 
					
						
							|  |  |  |     setopt local_options | 
					
						
							|  |  |  |     unsetopt equals | 
					
						
							|  |  |  |     virtualenvwrapper=${${virtualenvwrapper_lazy}:c} | 
					
						
							|  |  |  |     source ${${virtualenvwrapper_lazy}:c} | 
					
						
							| 
									
										
										
										
											2018-06-06 17:14:19 +02:00
										 |  |  |     [[ -z "$WORKON_HOME" ]] && WORKON_HOME="$HOME/.virtualenvs" | 
					
						
							| 
									
										
										
										
											2018-05-26 19:44:49 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | elif (( $+commands[$virtualenvwrapper] )); then | 
					
						
							| 
									
										
										
										
											2015-06-10 10:01:38 -05:00
										 |  |  |   function { | 
					
						
							|  |  |  |     setopt local_options | 
					
						
							|  |  |  |     unsetopt equals | 
					
						
							|  |  |  |     source ${${virtualenvwrapper}:c} | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-05-13 12:56:46 -07:00
										 |  |  | 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" | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2020-01-19 20:42:45 +01:00
										 |  |  | elif [[ -f "/usr/share/virtualenvwrapper/virtualenvwrapper.sh" ]]; then | 
					
						
							|  |  |  |   function { | 
					
						
							|  |  |  |     setopt local_options | 
					
						
							|  |  |  |     unsetopt equals | 
					
						
							|  |  |  |     virtualenvwrapper="/usr/share/virtualenvwrapper/virtualenvwrapper.sh" | 
					
						
							|  |  |  |     source "/usr/share/virtualenvwrapper/virtualenvwrapper.sh" | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-05-20 09:41:36 -04:00
										 |  |  | elif [[ -f "/etc/bash_completion.d/virtualenvwrapper" ]]; then | 
					
						
							| 
									
										
										
										
											2015-06-10 10:01:38 -05:00
										 |  |  |   function { | 
					
						
							|  |  |  |     setopt local_options | 
					
						
							|  |  |  |     unsetopt equals | 
					
						
							|  |  |  |     virtualenvwrapper="/etc/bash_completion.d/virtualenvwrapper" | 
					
						
							|  |  |  |     source "/etc/bash_completion.d/virtualenvwrapper" | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2014-05-20 09:41:36 -04:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2015-07-02 21:42:32 -04:00
										 |  |  |   print "[oh-my-zsh] virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}.\n"\
 | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |         "Please install with \`pip install virtualenvwrapper\`" >&2 | 
					
						
							|  |  |  |   return | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | if ! type workon &>/dev/null; then | 
					
						
							| 
									
										
										
										
											2015-07-02 21:42:32 -04:00
										 |  |  |   print "[oh-my-zsh] virtualenvwrapper plugin: shell function 'workon' not defined.\n"\
 | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |         "Please check ${virtualenvwrapper}" >&2 | 
					
						
							| 
									
										
										
										
											2014-05-20 09:41:36 -04:00
										 |  |  |   return | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2012-06-09 11:04:58 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  | if [[ "$WORKON_HOME" == "" ]]; then | 
					
						
							| 
									
										
										
										
											2015-07-02 21:42:32 -04:00
										 |  |  |   print "[oh-my-zsh] \$WORKON_HOME is not defined so plugin virtualenvwrapper will not work" >&2 | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |   return | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2012-06-09 11:04:58 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  | if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then | 
					
						
							| 
									
										
										
										
											2015-07-02 21:42:32 -04:00
										 |  |  |   # Automatically activate Git projects or other customized virtualenvwrapper projects based on the | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |   # directory name of the project. Virtual environment name can be overridden | 
					
						
							| 
									
										
										
										
											2015-07-02 21:42:32 -04:00
										 |  |  |   # by placing a .venv file in the project root with a virtualenv name in it. | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |   function workon_cwd { | 
					
						
							| 
									
										
										
										
											2015-07-02 21:42:32 -04:00
										 |  |  |     if [[ -z "$WORKON_CWD" ]]; then | 
					
						
							|  |  |  |       local WORKON_CWD=1 | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |       # Check if this is a Git repo | 
					
						
							| 
									
										
										
										
											2015-07-02 21:42:32 -04:00
										 |  |  |       local GIT_REPO_ROOT="" | 
					
						
							| 
									
										
										
										
											2015-08-07 22:45:46 +02:00
										 |  |  |       local GIT_TOPLEVEL="$(git rev-parse --show-toplevel 2> /dev/null)" | 
					
						
							| 
									
										
										
										
											2015-07-02 21:42:32 -04:00
										 |  |  |       if [[ $? == 0 ]]; then | 
					
						
							|  |  |  |         GIT_REPO_ROOT="$GIT_TOPLEVEL" | 
					
						
							|  |  |  |       fi | 
					
						
							| 
									
										
										
										
											2015-06-29 18:55:58 -04:00
										 |  |  |       # Get absolute path, resolving symlinks | 
					
						
							| 
									
										
										
										
											2015-07-02 21:42:32 -04:00
										 |  |  |       local PROJECT_ROOT="${PWD:A}" | 
					
						
							|  |  |  |       while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" \
 | 
					
						
							|  |  |  |                && ! -d "$PROJECT_ROOT/.git"  && "$PROJECT_ROOT" != "$GIT_REPO_ROOT" ]]; do | 
					
						
							| 
									
										
										
										
											2015-06-29 18:55:58 -04:00
										 |  |  |         PROJECT_ROOT="${PROJECT_ROOT:h}" | 
					
						
							| 
									
										
										
										
											2015-05-21 17:34:24 +02:00
										 |  |  |       done | 
					
						
							|  |  |  |       if [[ "$PROJECT_ROOT" == "/" ]]; then | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |         PROJECT_ROOT="." | 
					
						
							|  |  |  |       fi | 
					
						
							|  |  |  |       # Check for virtualenv name override | 
					
						
							|  |  |  |       if [[ -f "$PROJECT_ROOT/.venv" ]]; then | 
					
						
							| 
									
										
										
										
											2015-08-07 22:45:46 +02:00
										 |  |  |         ENV_NAME="$(cat "$PROJECT_ROOT/.venv")" | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |       elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]];then | 
					
						
							|  |  |  |         ENV_NAME="$PROJECT_ROOT/.venv" | 
					
						
							|  |  |  |       elif [[ "$PROJECT_ROOT" != "." ]]; then | 
					
						
							| 
									
										
										
										
											2015-06-29 18:55:58 -04:00
										 |  |  |         ENV_NAME="${PROJECT_ROOT:t}" | 
					
						
							| 
									
										
										
										
											2013-11-22 11:48:13 +01:00
										 |  |  |       else | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |         ENV_NAME="" | 
					
						
							|  |  |  |       fi | 
					
						
							| 
									
										
										
										
											2019-12-21 00:08:03 -05:00
										 |  |  |        | 
					
						
							|  |  |  |       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 | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |       if [[ "$ENV_NAME" != "" ]]; then | 
					
						
							|  |  |  |         # 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" | 
					
						
							|  |  |  |           elif [[ -e "$ENV_NAME/bin/activate" ]]; then | 
					
						
							|  |  |  |             source $ENV_NAME/bin/activate && export CD_VIRTUAL_ENV="$ENV_NAME" | 
					
						
							|  |  |  |           fi | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2013-11-22 11:48:13 +01:00
										 |  |  |       fi | 
					
						
							| 
									
										
										
										
											2013-06-08 11:25:52 -07:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2015-02-10 12:20:24 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Append workon_cwd to the chpwd_functions array, so it will be called on cd | 
					
						
							|  |  |  |   # http://zsh.sourceforge.net/Doc/Release/Functions.html | 
					
						
							| 
									
										
										
										
											2019-11-19 12:47:12 -05:00
										 |  |  |   autoload -U add-zsh-hook | 
					
						
							|  |  |  |   add-zsh-hook chpwd workon_cwd | 
					
						
							| 
									
										
										
										
											2012-06-09 11:04:58 +10:00
										 |  |  | fi |