From: Daniel Hahler Date: Sat, 15 Nov 2014 15:09:37 +0000 (+0100) Subject: Wrap sourcing in _dotenv_source: chdir and set _dotenv_cwd=$PWD X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=a37b0bc3f500c062dedd5881a788d97743bdfa0a;p=zsh-autoenv.git Wrap sourcing in _dotenv_source: chdir and set _dotenv_cwd=$PWD --- diff --git a/autoenv.zsh b/autoenv.zsh index fe1fa87..4fcde08 100644 --- a/autoenv.zsh +++ b/autoenv.zsh @@ -82,6 +82,18 @@ _dotenv_check_authorized_env_file() { return 0 } +_dotenv_source() { + local env_file=$1 + _dotenv_event=$2 + _dotenv_cwd=$PWD + + cd -q ${env_file:h} + source $env_file + cd -q - + + unset _dotenv_event _dotenv_cwd +} + _dotenv_chpwd_handler() { local env_file="$PWD/$DOTENV_FILE_ENTER" @@ -91,9 +103,7 @@ _dotenv_chpwd_handler() { if ! [[ ${PWD}/ == ${prev_dir}/* ]]; then local env_file_leave=$prev_dir/$DOTENV_FILE_LEAVE if _dotenv_check_authorized_env_file $env_file_leave; then - _dotenv_event=leave - source $env_file_leave - unset _dotenv_event + _dotenv_source $env_file_leave leave fi # Remove this entry from the stack. _dotenv_stack_entered=(${_dotenv_stack_entered#$prev_dir}) @@ -123,9 +133,7 @@ _dotenv_chpwd_handler() { _dotenv_stack_entered+=(${env_file:A:h}) - _dotenv_event=enter - source $env_file - unset _dotenv_event + _dotenv_source $env_file enter } autoload -U add-zsh-hook