foxshell/fn/-z4h-direnv-init
2025-07-04 11:48:40 -05:00

32 lines
741 B
Bash

#!/usr/bin/env zsh
local direnv cache=$Z4H/cache/direnv
if [[ -e $cache ]]; then
builtin source -- $cache || return
[[ -n $direnv ]] || return '_z4h_err()'
fi
if (( $1 )); then
local real_direnv=${commands[direnv]-}
if [[ $direnv != $real_direnv ]]; then
if [[ -n $real_direnv ]]; then
direnv=$real_direnv
if (( ! _z4h_dangerous_root )); then
local tmp=$cache.tmp.$$
typeset -p direnv >$tmp || return
zf_mv -f -- $tmp $cache || return
fi
else
[[ ! -e $cache ]] || builtin : >$cache || return
return
fi
elif [[ -z $direnv ]]; then
return
fi
elif [[ ! -x $direnv ]]; then
return
fi
-z4h-direnv-hook $direnv || return
typeset -gi _z4h_direnv_initialized=1