feat: add git hooks for pre-push validation and post-merge auto-deploy
Validate and Test / validate-patches (push) Failing after 12s

- .githooks/pre-push: validate Pd patches via python3 pd-validator
- .githooks/post-merge: auto-restart services when systemd/scripts change
- install.sh: configure core.hooksPath at install time
- justfile deploy: set hooksPath after git pull
This commit is contained in:
2026-06-24 03:19:51 -07:00
parent ce4022fa1c
commit 0382450f8b
4 changed files with 56 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
# post-merge: auto-detect changes and reinstall/restart services on the board
set -euo pipefail
REPO="$(cd "$(dirname "$0")/.." && pwd)"
CHANGED=$(git diff HEAD@{1} --name-only 2>/dev/null || echo "")
if [ -z "$CHANGED" ]; then
exit 0
fi
SYSTEMD_CHANGED=$(echo "$CHANGED" | grep -c "^system/" || true)
SCRIPT_CHANGED=$(echo "$CHANGED" | grep -c "^scripts/" || true)
# Reinstall systemd units if any changed
if [ "$SYSTEMD_CHANGED" -gt 0 ]; then
echo "[githook:post-merge] Systemd units changed — reinstalling..."
sudo systemctl daemon-reload
fi
# Restart services if scripts or systemd changed
if [ "$SYSTEMD_CHANGED" -gt 0 ] || [ "$SCRIPT_CHANGED" -gt 0 ]; then
echo "[githook:post-merge] Scripts/services changed — restarting..."
sudo chmod +x "$REPO/scripts/"*.py "$REPO/scripts/"*.sh 2>/dev/null || true
for svc in midi-bridge pd-synth-onboard led-matrix-viz prometheus-exporter; do
sudo systemctl restart "$svc" 2>/dev/null || true
done
echo "[githook:post-merge] Services restarted"
fi
+23
View File
@@ -0,0 +1,23 @@
#!/bin/bash
# pre-push: validate Pd patches before pushing
set -euo pipefail
REPO="$(cd "$(dirname "$0")/.." && pwd)"
# Only check if there are any .pd files staged or changed
STAGED_PD=$(git diff --cached --name-only -- '*.pd' 2>/dev/null || true)
CHANGED_PD=$(git diff --name-only -- '*.pd' 2>/dev/null || true)
if [ -z "$STAGED_PD" ] && [ -z "$CHANGED_PD" ]; then
exit 0
fi
echo "[githook:pre-push] Validating Pd patches..."
cd "$REPO"
if python3 pd-validator/validate.py pd/*.pd; then
echo "[githook:pre-push] All patches valid"
exit 0
else
echo "[githook:pre-push] Patch validation FAILED — fix before pushing"
exit 1
fi