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}