Add pre-commit hook for sanitizing node configs
This commit is contained in:
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user