_autoenv_get_file_upwards: handle relative paths

If `$look_from` is `.` the resulting file patch will be relative.
This commit is contained in:
Daniel Hahler 2017-08-11 10:26:38 +02:00
parent 9ecb91480d
commit b90d2c4f80
2 changed files with 11 additions and 4 deletions

View File

@ -330,19 +330,24 @@ _autoenv_get_file_upwards() {
# performance reasons, which is only available in zsh-5.0.5-146-g9381bb6.
local last
local parent_dir="$look_from/.."
local abs_parent_dir
while true; do
parent_dir=${parent_dir:A}
if [[ $parent_dir == $last ]]; then
abs_parent_dir=${parent_dir:A}
if [[ $abs_parent_dir == $last ]]; then
break
fi
local parent_file="${parent_dir}/${look_for}"
if [[ -f $parent_file ]]; then
echo $parent_file
if [[ ${parent_file[1,2]} == './' ]]; then
echo ${parent_file#./}
else
echo ${parent_file:A}
fi
break
fi
if [[ $parent_dir == $look_until ]]; then
if [[ $abs_parent_dir == $look_until ]]; then
break
fi
last=$parent_dir

View File

@ -13,6 +13,8 @@ Should not get the file from the current dir.
$ cd sub/sub2
$ _autoenv_get_file_upwards . file
../file
$ _autoenv_get_file_upwards $PWD file
*/_autoenv_utils.t/sub/file (glob)