flake-update-20260505
1# Shared helpers — loaded first, used everywhere
2
3# Bytecode compilation: compile .zsh → .zwc if source is newer
4_zsh_compile_if_needed() {
5 local src=$1 dst="${1}.zwc"
6 [[ -n $src && -r $src ]] || return 1
7 if [[ ! -f $dst || $src -nt $dst ]]; then
8 zcompile "$src" 2>/dev/null
9 fi
10}
11
12# Check if commands exist (hash lookup, no fork)
13has() {
14 local cmd
15 for cmd in "$@"; do
16 (( $+commands[$cmd] )) || return 1
17 done
18}
19
20# Source files from a directory, with bytecode compilation
21load_zsh_dir() {
22 local dir=$1 file
23 [[ -d $dir && -r $dir ]] || return 0
24 for file in "$dir"/*.zsh(N); do
25 [[ -r $file ]] || continue
26 _zsh_compile_if_needed "$file"
27 source "$file"
28 done
29}