Commit 0fba9e7
Eric Bower
·
2026-10-05 21:49:40 -0400 EDT
parent 0086743
fix: zig ctags-deps
4 files changed,
+21,
-39
| ... | ... | @@ -6,7 +6,7 @@ if ! command -v ctags >/dev/null 2>&1; then | |
| 6 | 6 | exit 1 | |
| 7 | 7 | fi | |
| 8 | 8 | ||
| 9 | - | target=".tags_deps" | |
| 9 | + | target="tags_deps" | |
| 10 | 10 | generated=0 | |
| 11 | 11 | ||
| 12 | 12 | # 1. Go modules |
| ... | ... | @@ -26,7 +26,6 @@ fi | |
| 26 | 26 | # 2. Zig dependencies (build.zig.zon / zig-pkg) | |
| 27 | 27 | if [[ -f "build.zig.zon" ]] || [[ -d "zig-pkg" ]]; then | |
| 28 | 28 | echo "Resolving Zig dependencies..." | |
| 29 | - | cache_p="${ZIG_GLOBAL_CACHE_DIR:-$HOME/.cache/zig}/p" | |
| 30 | 29 | zig_dirs=() | |
| 31 | 30 | ||
| 32 | 31 | # Check local vendor / cache directories first |
| ... | ... | @@ -36,43 +35,25 @@ if [[ -f "build.zig.zon" ]] || [[ -d "zig-pkg" ]]; then | |
| 36 | 35 | done | |
| 37 | 36 | fi | |
| 38 | 37 | ||
| 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 | - | ||
| 70 | 38 | if [[ ${#zig_dirs[@]} -gt 0 ]]; then | |
| 71 | 39 | readarray -t zig_dirs < <(printf "%s\n" "${zig_dirs[@]}" | sort -u) | |
| 72 | 40 | 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}" | |
| 76 | 57 | generated=1 | |
| 77 | 58 | fi | |
| 78 | 59 | fi |
+1,
-0
| ... | ... | @@ -4,6 +4,7 @@ | |
| 4 | 4 | tags | |
| 5 | 5 | tags.lock | |
| 6 | 6 | tags.temp | |
| 7 | + | tags_deps | |
| 7 | 8 | .tags* | |
| 8 | 9 | *.tags | |
| 9 | 10 | .kak.*.namecache |
+1,
-1
| ... | ... | @@ -1,5 +1,5 @@ | |
| 1 | 1 | { | |
| 2 | - | "lastChangelogVersion": "0.85.1", | |
| 2 | + | "lastChangelogVersion": "1.0.3", | |
| 3 | 3 | "packages": [ | |
| 4 | 4 | "npm:@deevus/pi-zmx", | |
| 5 | 5 | "file:~/.pi/agent/extensions/qwen-remote.ts" |
+2,
-2