Commit 3b50a3f
Eric Bower
·
2026-09-24 09:29:41 -0400 EDT
parent ee02162
fix(ctags): zig deps
1 files changed,
+33,
-10
| ... | ... | @@ -23,29 +23,52 @@ if [[ -f "go.mod" ]] && command -v go >/dev/null 2>&1; then | |
| 23 | 23 | fi | |
| 24 | 24 | fi | |
| 25 | 25 | ||
| 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 | |
| 28 | 28 | echo "Resolving Zig dependencies..." | |
| 29 | 29 | cache_p="${ZIG_GLOBAL_CACHE_DIR:-$HOME/.cache/zig}/p" | |
| 30 | 30 | 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 | |
| 32 | 47 | while IFS= read -r hash; do | |
| 33 | 48 | [[ -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 | |
| 34 | 53 | for d in "${cache_p}"/*"${hash}"*; do | |
| 35 | 54 | if [[ -d "$d" ]]; then | |
| 36 | 55 | 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 | |
| 37 | 65 | fi | |
| 38 | 66 | 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) | |
| 46 | 68 | fi | |
| 47 | 69 | ||
| 48 | 70 | if [[ ${#zig_dirs[@]} -gt 0 ]]; then | |
| 71 | + | readarray -t zig_dirs < <(printf "%s\n" "${zig_dirs[@]}" | sort -u) | |
| 49 | 72 | echo "Indexing ${#zig_dirs[@]} Zig dependencies into ${target}..." | |
| 50 | 73 | flags=("-f" "${target}" "--languages=+Zig") | |
| 51 | 74 | [[ $generated -eq 1 ]] && flags+=("-a") |