diff --git a/scripts/nuc-sync-leadtech.sh b/scripts/nuc-sync-leadtech.sh new file mode 100755 index 0000000..9ce8396 --- /dev/null +++ b/scripts/nuc-sync-leadtech.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +# nuc-sync-leadtech.sh +# À exécuter SUR LE NUC (docker-dev), via cron ou à la demande. +# +# Rôle : maintenir le clone Lead_tech du NUC à jour ET rafraîchir l'index du MCP +# sans redémarrer le conteneur. +# +# 1. git pull --ff-only → récupère la doctrine poussée depuis le Mac (ou ailleurs) +# 2. rebuild de l'index → le serveur MCP sert la connaissance fraîche au prochain +# get_guidance (l'index est lu à chaque appel) +# +# Tue le "yoyo git pull" : tu push depuis le Mac, le NUC suit tout seul. +# +# Installation cron (sur le NUC) : +# crontab -e +# */3 * * * * /srv/helpers/_Assistant_Lead_Tech/scripts/nuc-sync-leadtech.sh >> /srv/helpers/_Assistant_Lead_Tech/.nuc-sync.log 2>&1 + +set -euo pipefail + +REPO="/srv/helpers/_Assistant_Lead_Tech" +CONTAINER="leadtech-bmad-mcp" +TS() { date '+%Y-%m-%d %H:%M:%S'; } + +cd "$REPO" || { echo "[$(TS)] ✗ repo introuvable : $REPO"; exit 1; } + +# ─── 1. Pull (fast-forward only — jamais de merge auto qui pourrait diverger) ── +# On ne pull QUE s'il y a du nouveau, pour ne pas spammer le log ni rebuild pour rien. +git fetch origin --quiet +LOCAL="$(git rev-parse @)" +REMOTE="$(git rev-parse '@{u}')" + +if [ "$LOCAL" = "$REMOTE" ]; then + # Déjà à jour : rien à faire (sortie silencieuse pour ne pas polluer le log cron) + exit 0 +fi + +echo "[$(TS)] ↓ nouveau commit distant détecté, pull…" +if ! git merge --ff-only origin/"$(git rev-parse --abbrev-ref HEAD)" --quiet; then + echo "[$(TS)] ✗ ff-only impossible (divergence locale sur le NUC ?). Intervention manuelle requise." + echo "[$(TS)] → un commit local non poussé existe peut-être sur le NUC. Vérifier 'git status'." + exit 1 +fi +echo "[$(TS)] ✓ pull OK → $(git rev-parse --short HEAD)" + +# ─── 2. Rebuild de l'index dans le conteneur (sans restart) ─────────────────── +if docker ps --filter "name=$CONTAINER" --format '{{.Names}}' | grep -q "^$CONTAINER$"; then + if docker exec "$CONTAINER" leadtech-bmad-build-index >/dev/null 2>&1; then + echo "[$(TS)] ✓ index MCP reconstruit (conteneur $CONTAINER, sans restart)" + else + echo "[$(TS)] ⚠ rebuild index échoué dans $CONTAINER — le MCP sert l'ancien index jusqu'au prochain restart." + fi +else + echo "[$(TS)] ⚠ conteneur $CONTAINER non actif — pull fait, index non reconstruit." +fi