#!/usr/bin/env bash set -euo pipefail SCRIPT="$(git rev-parse --show-toplevel)/scripts/util/sanitize_node.sh" FILES=$(git diff --cached --name-only --diff-filter=ACM -- 'nodes/*.json' || true) [[ -z "$FILES" ]] && exit 0 DIRTY=0 while IFS= read -r file; do staged_tmp=$(mktemp) sanitized_tmp=$(mktemp) # 1. get staged version git show ":$file" > "$staged_tmp" # 2. sanitize IN PLACE (on temp copy) cp "$staged_tmp" "$sanitized_tmp" "$SCRIPT" "$sanitized_tmp" # 3. if sanitizer changed file, update working tree if ! diff -q "$staged_tmp" "$sanitized_tmp" >/dev/null; then cp "$sanitized_tmp" "$file" echo "Sanitized: $file" DIRTY=1 fi rm -f "$staged_tmp" "$sanitized_tmp" done <<< "$FILES" if [[ "$DIRTY" -ne 0 ]]; then echo "" echo "Commit paused, sanitized files must be re-staged." exit 1 fi exit 0