#!/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