first commit
This commit is contained in:
commit
0610f4aeab
130 changed files with 9897 additions and 0 deletions
81
fn/-z4h-direnv-hook
Normal file
81
fn/-z4h-direnv-hook
Normal file
|
@ -0,0 +1,81 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
eval "$_z4h_opt"
|
||||
|
||||
unset _z4h_direnv_err
|
||||
|
||||
if (( ARGC )); then
|
||||
local direnv=$1
|
||||
else
|
||||
local direnv=${commands[direnv]-}
|
||||
if [[ -z $direnv ]]; then
|
||||
unset _z4h_direnv_sig
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# { print -n '\x1f\x8b\x08\x00\x00\x00\x00\x00'; base64 -d <<<${${DIRENV_WATCHES//-/+}//_//} } | zcat 2>/dev/null
|
||||
|
||||
# zcat
|
||||
# gzcat
|
||||
# uncompress -c
|
||||
# gunzip -c
|
||||
# gzip -cd
|
||||
|
||||
local sig
|
||||
local envrc=(./(../)#.envrc(NY1:a))
|
||||
if (( $#envrc )); then
|
||||
local -a deps=(
|
||||
${XDG_DATA_HOME:-~/.local/share}/direnv/allow
|
||||
${XDG_CONFIG_HOME:-~/.config}/{direnv.toml,config.toml})
|
||||
local -a stat
|
||||
local files=($^deps(N))
|
||||
local non_files=(${deps:|files})
|
||||
if zstat -A stat +mtime -- $envrc $files 2>/dev/null; then
|
||||
local sig=$envrc$'\0'${(pj:\0:)stat}
|
||||
else
|
||||
local sig=stat-error
|
||||
fi
|
||||
elif [[ ! -v DIRENV_WATCHES ]]; then
|
||||
typeset -g _z4h_direnv_sig=none
|
||||
return
|
||||
else
|
||||
local sig=none
|
||||
fi
|
||||
|
||||
[[ $sig == ${_z4h_direnv_sig-} ]] && return
|
||||
|
||||
unset _z4h_direnv_sig
|
||||
|
||||
local data
|
||||
data=$(
|
||||
local out
|
||||
out=$($direnv export zsh) 2>&1
|
||||
builtin printf '%s%18d%d' "$out" $#out $(( ! $? ))
|
||||
) || return
|
||||
|
||||
local -i success=$data[-1]
|
||||
local -i out_len=$data[-19,-2]
|
||||
local out=$data[-out_len-19,-20]
|
||||
local err=${data[1,-out_len-20]%%$'\n'#}
|
||||
|
||||
if [[ -n $err ]]; then
|
||||
local ctx=:z4h:direnv:
|
||||
(( success )) && ctx+='success' || ctx+='error'
|
||||
if zstyle -T $ctx notify; then
|
||||
if builtin zle; then
|
||||
typeset -g _p9k__raw_msg=${err//\%/%%}$'\n'
|
||||
else
|
||||
print -ru2 -- $err
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
emulate -L zsh
|
||||
if [[ ! -v __p9k_trapped ]]; then
|
||||
local -i __p9k_trapped
|
||||
builtin trap : INT
|
||||
builtin trap "builtin trap ${(q)__p9k_trapint:--} INT" EXIT
|
||||
fi
|
||||
builtin eval -- $out
|
||||
typeset -g _z4h_direnv_sig=$sig
|
Loading…
Add table
Add a link
Reference in a new issue