Commit 3b50a3f

Eric Bower  ·  2026-09-24 09:29:41 -0400 EDT
parent ee02162
fix(ctags): zig deps
1 files changed,  +33, -10
+33, -10
......@@ -23,29 +23,52 @@ if [[ -f "go.mod" ]] && command -v go >/dev/null 2>&1; then
2323 fi
2424 fi
2525
26-# 2. Zig dependencies (build.zig.zon)
27-if [[ -f "build.zig.zon" ]]; then
26+# 2. Zig dependencies (build.zig.zon / zig-pkg)
27+if [[ -f "build.zig.zon" ]] || [[ -d "zig-pkg" ]]; then
2828 echo "Resolving Zig dependencies..."
2929 cache_p="${ZIG_GLOBAL_CACHE_DIR:-$HOME/.cache/zig}/p"
3030 zig_dirs=()
31- if [[ -d "${cache_p}" ]]; then
31+
32+ # Check local vendor / cache directories first
33+ if [[ -d "zig-pkg" ]]; then
34+ for d in zig-pkg/*; do
35+ [[ -d "$d" ]] && zig_dirs+=("$d")
36+ done
37+ fi
38+
39+ if [[ -d ".zig-cache/p" ]]; then
40+ for d in .zig-cache/p/*; do
41+ [[ -d "$d" ]] && zig_dirs+=("$d")
42+ done
43+ fi
44+
45+ # Fallback to global cache for any dependencies from build.zig.zon
46+ if [[ -f "build.zig.zon" && -d "${cache_p}" ]]; then
3247 while IFS= read -r hash; do
3348 [[ -z "$hash" ]] && continue
49+ # Skip if already found locally
50+ if [[ ${#zig_dirs[@]} -gt 0 ]] && printf "%s\n" "${zig_dirs[@]}" | grep -q "${hash}"; then
51+ continue
52+ fi
3453 for d in "${cache_p}"/*"${hash}"*; do
3554 if [[ -d "$d" ]]; then
3655 zig_dirs+=("$d")
56+ elif [[ -f "$d" && "$d" == *.tar.gz ]]; then
57+ target_dir="${d%.tar.gz}"
58+ if [[ ! -d "$target_dir" ]]; then
59+ echo "Unpacking $(basename "$d")..."
60+ tar -xzf "$d" -C "${cache_p}" 2>/dev/null || true
61+ fi
62+ if [[ -d "$target_dir" ]]; then
63+ zig_dirs+=("$target_dir")
64+ fi
3765 fi
3866 done
39- done < <(grep -oE '[0-9a-zA-Z_-]{40,}' build.zig.zon | sort -u)
40- fi
41-
42- if [[ -d ".zig-cache/p" ]]; then
43- for d in .zig-cache/p/*; do
44- [[ -d "$d" ]] && zig_dirs+=("$d")
45- done
67+ done < <({ grep -oE '\.hash\s*=\s*"[^"]+"' build.zig.zon | sed -E 's/.*"([^"]+)".*/\1/'; grep -oE '[0-9a-zA-Z._-]{40,}' build.zig.zon; } | sort -u)
4668 fi
4769
4870 if [[ ${#zig_dirs[@]} -gt 0 ]]; then
71+ readarray -t zig_dirs < <(printf "%s\n" "${zig_dirs[@]}" | sort -u)
4972 echo "Indexing ${#zig_dirs[@]} Zig dependencies into ${target}..."
5073 flags=("-f" "${target}" "--languages=+Zig")
5174 [[ $generated -eq 1 ]] && flags+=("-a")