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