mirror of
https://github.com/Tarrasch/zsh-autoenv.git
synced 2024-12-01 18:31:00 +02:00
Merge pull request #17 from Tarrasch/dont-cd-in-chpwd
Do not `cd` in the `chpwd` hook: changes $PWD behavior in .env files!
This commit is contained in:
commit
9339306f60
@ -26,7 +26,7 @@ export AUTOENV_ENV_FILENAME=$HOME/.env_auth
|
|||||||
# Source the next .env file from parent directories.
|
# Source the next .env file from parent directories.
|
||||||
# This is useful if you want to use a base .env file for a directory subtree.
|
# This is useful if you want to use a base .env file for a directory subtree.
|
||||||
autoenv_source_parent() {
|
autoenv_source_parent() {
|
||||||
local parent_env_file=$(_autoenv_get_file_upwards $PWD)
|
local parent_env_file=$(_autoenv_get_file_upwards ${autoenv_env_file:h})
|
||||||
|
|
||||||
if [[ -n $parent_env_file ]] \
|
if [[ -n $parent_env_file ]] \
|
||||||
&& _autoenv_check_authorized_env_file $parent_env_file; then
|
&& _autoenv_check_authorized_env_file $parent_env_file; then
|
||||||
@ -223,13 +223,11 @@ _autoenv_source() {
|
|||||||
|
|
||||||
# Change to directory of env file, source it and cd back.
|
# Change to directory of env file, source it and cd back.
|
||||||
local new_dir=$PWD
|
local new_dir=$PWD
|
||||||
builtin cd -q $_autoenv_envfile_dir
|
|
||||||
_autoenv_debug "== SOURCE: ${bold_color:-}$env_file${reset_color:-}\n PWD: $PWD"
|
_autoenv_debug "== SOURCE: ${bold_color:-}$env_file${reset_color:-}\n PWD: $PWD"
|
||||||
(( _autoenv_debug_indent++ ))
|
(( _autoenv_debug_indent++ ))
|
||||||
source $env_file
|
source $env_file
|
||||||
(( _autoenv_debug_indent-- ))
|
(( _autoenv_debug_indent-- ))
|
||||||
_autoenv_debug "== END SOURCE =="
|
_autoenv_debug "== END SOURCE =="
|
||||||
builtin cd -q $new_dir
|
|
||||||
|
|
||||||
if [[ $autoenv_event == enter ]]; then
|
if [[ $autoenv_event == enter ]]; then
|
||||||
_autoenv_stack_entered_add $env_file
|
_autoenv_stack_entered_add $env_file
|
||||||
|
16
tests/cwd.t
16
tests/cwd.t
@ -7,8 +7,8 @@ Setup env actions / output.
|
|||||||
$ AUTOENV_LOOK_UPWARDS=1
|
$ AUTOENV_LOOK_UPWARDS=1
|
||||||
$ mkdir -p sub/sub2
|
$ mkdir -p sub/sub2
|
||||||
$ cd sub
|
$ cd sub
|
||||||
$ echo 'echo ENTERED: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .env
|
$ echo 'echo ENTERED: PWD:${PWD:t} pwd:${${"$(pwd)"}:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .env
|
||||||
$ echo 'echo LEFT: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .env.leave
|
$ echo 'echo LEFT: PWD:${PWD:t} pwd:${${"$(pwd)"}:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .env.leave
|
||||||
|
|
||||||
Manually create auth files.
|
Manually create auth files.
|
||||||
|
|
||||||
@ -17,21 +17,21 @@ Manually create auth files.
|
|||||||
The actual tests.
|
The actual tests.
|
||||||
|
|
||||||
$ cd .
|
$ cd .
|
||||||
ENTERED: PWD:sub from:sub to:sub event:enter
|
ENTERED: PWD:sub pwd:sub from:sub to:sub event:enter
|
||||||
|
|
||||||
$ cd ..
|
$ cd ..
|
||||||
LEFT: PWD:sub from:sub to:cwd.t event:leave
|
LEFT: PWD:cwd.t pwd:cwd.t from:sub to:cwd.t event:leave
|
||||||
|
|
||||||
$ cd sub/sub2
|
$ cd sub/sub2
|
||||||
ENTERED: PWD:sub from:cwd.t to:sub2 event:enter
|
ENTERED: PWD:sub2 pwd:sub2 from:cwd.t to:sub2 event:enter
|
||||||
|
|
||||||
Check that symlinked dirs get handled correctly.
|
Check that symlinked dirs get handled correctly.
|
||||||
|
|
||||||
$ cd ../..
|
$ cd ../..
|
||||||
LEFT: PWD:sub from:sub2 to:cwd.t event:leave
|
LEFT: PWD:cwd.t pwd:cwd.t from:sub2 to:cwd.t event:leave
|
||||||
$ ln -s sub sub_linked
|
$ ln -s sub sub_linked
|
||||||
$ cd sub_linked
|
$ cd sub_linked
|
||||||
ENTERED: PWD:sub from:cwd.t to:sub_linked event:enter
|
ENTERED: PWD:sub_linked pwd:sub_linked from:cwd.t to:sub_linked event:enter
|
||||||
$ cd sub2
|
$ cd sub2
|
||||||
ENTERED: PWD:sub from:sub_linked to:sub2 event:enter
|
ENTERED: PWD:sub2 pwd:sub2 from:sub_linked to:sub2 event:enter
|
||||||
$ cd .
|
$ cd .
|
||||||
|
@ -16,7 +16,7 @@ Create env files in sub dir.
|
|||||||
|
|
||||||
$ mkdir -p sub/sub2
|
$ mkdir -p sub/sub2
|
||||||
$ cd sub
|
$ cd sub
|
||||||
ENTERED_root: PWD:recurse-upwards.t from:recurse-upwards.t to:sub
|
ENTERED_root: PWD:sub from:recurse-upwards.t to:sub
|
||||||
|
|
||||||
$ echo 'echo ENTERED_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .env
|
$ echo 'echo ENTERED_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .env
|
||||||
$ echo 'echo LEFT_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .env.leave
|
$ echo 'echo LEFT_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .env.leave
|
||||||
@ -28,10 +28,10 @@ The actual tests.
|
|||||||
ENTERED_sub: PWD:sub from:sub to:sub
|
ENTERED_sub: PWD:sub from:sub to:sub
|
||||||
|
|
||||||
$ cd ..
|
$ cd ..
|
||||||
LEFT_sub: PWD:sub from:sub to:recurse-upwards.t
|
LEFT_sub: PWD:recurse-upwards.t from:sub to:recurse-upwards.t
|
||||||
|
|
||||||
$ cd sub/sub2
|
$ cd sub/sub2
|
||||||
ENTERED_sub: PWD:sub from:recurse-upwards.t to:sub2
|
ENTERED_sub: PWD:sub2 from:recurse-upwards.t to:sub2
|
||||||
|
|
||||||
$ cd ..
|
$ cd ..
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ Add sub/sub2/.env file, with a call to autoenv_source_parent.
|
|||||||
$ test_autoenv_add_to_env sub2/.env
|
$ test_autoenv_add_to_env sub2/.env
|
||||||
$ cd sub2
|
$ cd sub2
|
||||||
autoenv_source_parent_from_sub2:
|
autoenv_source_parent_from_sub2:
|
||||||
ENTERED_sub: PWD:sub from:sub to:sub2
|
ENTERED_sub: PWD:sub2 from:sub to:sub2
|
||||||
ENTER2
|
ENTER2
|
||||||
done_sub2
|
done_sub2
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ Move sub/.env away, now the root .env file should get sourced.
|
|||||||
$ touch -t 201401010102 .env
|
$ touch -t 201401010102 .env
|
||||||
$ cd .
|
$ cd .
|
||||||
autoenv_source_parent_from_sub2:
|
autoenv_source_parent_from_sub2:
|
||||||
ENTERED_root: PWD:recurse-upwards.t from:sub2 to:sub2
|
ENTERED_root: PWD:sub2 from:sub2 to:sub2
|
||||||
done_sub2
|
done_sub2
|
||||||
$ mv ../.env.out ../.env
|
$ mv ../.env.out ../.env
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ Prepend call to autoenv_source_parent to sub/.env file.
|
|||||||
|
|
||||||
$ cd .
|
$ cd .
|
||||||
autoenv_source_parent_from_sub:
|
autoenv_source_parent_from_sub:
|
||||||
ENTERED_root: PWD:recurse-upwards.t from:sub to:sub
|
ENTERED_root: PWD:sub from:sub to:sub
|
||||||
ENTERED_sub: PWD:sub from:sub to:sub
|
ENTERED_sub: PWD:sub from:sub to:sub
|
||||||
ENTER2
|
ENTER2
|
||||||
done_sub
|
done_sub
|
||||||
@ -91,8 +91,8 @@ Add sub/sub2/.env file.
|
|||||||
$ cd sub2
|
$ cd sub2
|
||||||
autoenv_source_parent_from_sub2:
|
autoenv_source_parent_from_sub2:
|
||||||
autoenv_source_parent_from_sub:
|
autoenv_source_parent_from_sub:
|
||||||
ENTERED_root: PWD:recurse-upwards.t from:sub to:sub
|
ENTERED_root: PWD:sub2 from:sub to:sub2
|
||||||
ENTERED_sub: PWD:sub from:sub to:sub
|
ENTERED_sub: PWD:sub2 from:sub to:sub2
|
||||||
ENTER2
|
ENTER2
|
||||||
done_sub
|
done_sub
|
||||||
done_sub2
|
done_sub2
|
||||||
@ -102,7 +102,7 @@ This should not trigger the enter event, because it was handled via
|
|||||||
autoenv_source_parent already.
|
autoenv_source_parent already.
|
||||||
|
|
||||||
$ cd ../..
|
$ cd ../..
|
||||||
LEFT_sub: PWD:sub from:sub2 to:recurse-upwards.t
|
LEFT_sub: PWD:recurse-upwards.t from:sub2 to:recurse-upwards.t
|
||||||
|
|
||||||
|
|
||||||
Changing the root .env should trigger re-authentication via autoenv_source_parent.
|
Changing the root .env should trigger re-authentication via autoenv_source_parent.
|
||||||
@ -155,13 +155,13 @@ Touching the .env file will now source the parent env file.
|
|||||||
|
|
||||||
|
|
||||||
$ cd ..
|
$ cd ..
|
||||||
LEFT_sub: PWD:sub from:sub to:recurse-upwards.t
|
LEFT_sub: PWD:recurse-upwards.t from:sub to:recurse-upwards.t
|
||||||
$ mkdir sub/sub2/sub3
|
$ mkdir sub/sub2/sub3
|
||||||
$ cd sub/sub2/sub3
|
$ cd sub/sub2/sub3
|
||||||
autoenv_source_parent_from_sub2:
|
autoenv_source_parent_from_sub2:
|
||||||
autoenv_source_parent_from_sub:
|
autoenv_source_parent_from_sub:
|
||||||
NEW
|
NEW
|
||||||
ENTERED_sub: PWD:sub from:recurse-upwards.t to:sub
|
ENTERED_sub: PWD:sub3 from:recurse-upwards.t to:sub3
|
||||||
ENTER2
|
ENTER2
|
||||||
done_sub
|
done_sub
|
||||||
done_sub2
|
done_sub2
|
||||||
|
Loading…
Reference in New Issue
Block a user