Files
uno-q-audio-synth/.githooks/post-merge
T
david b4d19f680a
Validate and Test / validate-patches (push) Failing after 13s
fix: ensure script executability on every pull
git checkout/clone can lose +x bits. Move chmod to always
run in post-merge hook, not just when scripts/ changes.
2026-06-24 14:54:28 -07:00

40 lines
1.5 KiB
Bash
Executable File

#!/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
# Always ensure scripts are executable (git may lose +x on clone/checkout)
sudo chmod +x "$REPO/scripts/"*.py "$REPO/scripts/"*.sh 2>/dev/null || true
SYSTEMD_CHANGED=$(echo "$CHANGED" | grep -c "^system/" || true)
SCRIPT_CHANGED=$(echo "$CHANGED" | grep -c "^scripts/" || true)
SKETCH_CHANGED=$(echo "$CHANGED" | grep -c "^sketch/" || true)
# Reflash MCU if sketch changed
if [ "$SKETCH_CHANGED" -gt 0 ]; then
echo "[githook:post-merge] MCU sketch changed — reflashing..."
cd "$REPO" && arduino-cli compile --upload --fqbn arduino:zephyr:unoq sketch/ 2>&1
fi
# 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