#!/bin/sh # # update-parser.sh — Bump vendored tree-sitter-zig and rebuild the dylib. # # Purpose: # Refresh the vendored snapshot under vendor/tree-sitter-zig/ to a newer # upstream commit, update VENDORING.md, and rebuild the parser dylib. # # What it does: # - clones tree-sitter-grammars/tree-sitter-zig into a temp dir # - checks out the requested ref (default: HEAD of the default branch) # - exits early if the upstream SHA matches the pinned SHA # - replaces src/, queries/, grammar.js, tree-sitter.json, LICENSE # with the upstream copies; leaves VENDORING.md and README.upstream.md # untouched # - rewrites the "Pinned commit:" line in VENDORING.md # - invokes build-parser.sh to rebuild Syntaxes/libtree-sitter-zig.dylib # - prints a GitHub compare link for the diff # # Usage: # ./Scripts/update-parser.sh # bump to upstream HEAD # ./Scripts/update-parser.sh # bump to a tag, branch, or SHA # # Caveats: # - any local edits inside the listed paths are overwritten — review # `git diff vendor/` afterwards before committing # - parses VENDORING.md by an exact "Pinned commit: " line prefix; # keep that line format intact # # Requirements: # git, plus everything build-parser.sh needs. set -eu ROOT="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)" VENDOR_DIR="$ROOT/vendor/tree-sitter-zig" UPSTREAM="https://github.com/tree-sitter-grammars/tree-sitter-zig.git" REF="${1:-HEAD}" TMP="$(mktemp -d)" trap 'rm -rf "$TMP"' EXIT git clone --quiet "$UPSTREAM" "$TMP/repo" git -C "$TMP/repo" checkout --quiet "$REF" SHA="$(git -C "$TMP/repo" rev-parse HEAD)" OLD_SHA="$(awk '/^Pinned commit:/ {print $3}' "$VENDOR_DIR/VENDORING.md")" if [ "$SHA" = "$OLD_SHA" ]; then echo "Already at $SHA — nothing to do." exit 0 fi for path in src queries grammar.js tree-sitter.json LICENSE; do rm -rf "$VENDOR_DIR/$path" cp -R "$TMP/repo/$path" "$VENDOR_DIR/$path" done sed -i.bak "s/^Pinned commit: .*/Pinned commit: $SHA/" "$VENDOR_DIR/VENDORING.md" rm "$VENDOR_DIR/VENDORING.md.bak" "$ROOT/Scripts/build-parser.sh" echo "Updated $OLD_SHA -> $SHA" echo "Compare: https://github.com/tree-sitter-grammars/tree-sitter-zig/compare/$OLD_SHA...$SHA"