Commit 0fba9e7

Eric Bower  ·  2026-10-05 21:49:40 -0400 EDT
parent 0086743
fix: zig ctags-deps
4 files changed,  +21, -39
+17, -36
......@@ -6,7 +6,7 @@ if ! command -v ctags >/dev/null 2>&1; then
66 exit 1
77 fi
88
9-target=".tags_deps"
9+target="tags_deps"
1010 generated=0
1111
1212 # 1. Go modules
......@@ -26,7 +26,6 @@ fi
2626 # 2. Zig dependencies (build.zig.zon / zig-pkg)
2727 if [[ -f "build.zig.zon" ]] || [[ -d "zig-pkg" ]]; then
2828 echo "Resolving Zig dependencies..."
29- cache_p="${ZIG_GLOBAL_CACHE_DIR:-$HOME/.cache/zig}/p"
3029 zig_dirs=()
3130
3231 # Check local vendor / cache directories first
......@@ -36,43 +35,25 @@ if [[ -f "build.zig.zon" ]] || [[ -d "zig-pkg" ]]; then
3635 done
3736 fi
3837
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
47- while IFS= read -r hash; do
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
53- for d in "${cache_p}"/*"${hash}"*; do
54- if [[ -d "$d" ]]; then
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
65- fi
66- 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)
68- fi
69-
7038 if [[ ${#zig_dirs[@]} -gt 0 ]]; then
7139 readarray -t zig_dirs < <(printf "%s\n" "${zig_dirs[@]}" | sort -u)
7240 echo "Indexing ${#zig_dirs[@]} Zig dependencies into ${target}..."
73- flags=("-f" "${target}" "--languages=+Zig")
74- [[ $generated -eq 1 ]] && flags+=("-a")
75- printf "%s\n" "${zig_dirs[@]}" | ctags "${flags[@]}" -L -
41+ # NOTE: --languages=Zig (not +Zig) so we don't also index CSS/HTML/JSON/etc.
42+ tmp_tags="$(mktemp)"
43+ printf "%s\n" "${zig_dirs[@]}" | ctags \
44+ -f "${tmp_tags}" --languages=Zig \
45+ --exclude=test --exclude=tests \
46+ --exclude=example --exclude=examples \
47+ --exclude=doc --exclude=docs \
48+ --exclude=zig-out --exclude=build.zig \
49+ -L -
50+ # Prune to the public interface: keep only tags whose definition line
51+ # is a `pub` declaration (private items are unreachable from user code).
52+ if [[ $generated -eq 0 ]]; then
53+ grep '^!' "${tmp_tags}" >> "${target}" || true
54+ fi
55+ awk -F'\t' '$2 ~ /\.zig$/ && $3 ~ /(^|[^A-Za-z0-9_])pub /' "${tmp_tags}" >> "${target}"
56+ rm -f "${tmp_tags}"
7657 generated=1
7758 fi
7859 fi
+1, -0
......@@ -4,6 +4,7 @@
44 tags
55 tags.lock
66 tags.temp
7+tags_deps
78 .tags*
89 *.tags
910 .kak.*.namecache
+1, -1
......@@ -1,5 +1,5 @@
11 {
2- "lastChangelogVersion": "0.85.1",
2+ "lastChangelogVersion": "1.0.3",
33 "packages": [
44 "npm:@deevus/pi-zmx",
55 "file:~/.pi/agent/extensions/qwen-remote.ts"
+2, -2
......@@ -18,8 +18,8 @@ Host mae
1818 User ericbower
1919 IdentityFile ~/.ssh/id_ed25519
2020
21-Host rack.nixos
22- HostName 10.2.20.127
21+Host rack.git
22+ HostName 10.2.20.51
2323 User erock
2424 IdentityFile ~/.ssh/id_ed25519
2525 IdentitiesOnly yes