#!/bin/bash # Auteur : Simon-Pierre Boucher — contact@spboucher.ai # ka-ui/kaid/sync-kaid.sh — redistribue le client KA ID v2 dans les apps, # directement SUR LES NŒUDS (remote-first). À lancer depuis M3U96a. # kaid.py → paquet backend de l'app (louka/, jobka/, …) # ka-id.js → frontend/public/ ET frontend/dist/ (si présents) # Usage : ./sync-kaid.sh [app…] (défaut : toutes) # Rebuild frontend + pm2 restart requis par app ensuite. set -uo pipefail cd "$(dirname "$0")" # app|node|dir_paquet_backend|dir_frontend (public/dist relatifs à celui-ci) MAP=" lou-ka|M3U96b|~/apps/lou-ka/louka|~/apps/lou-ka/frontend crea-ka|M3U96b|~/apps/crea-ka/creaka|~/apps/crea-ka/frontend resto-ka|M3U96b|~/apps/resto-ka/restoka|~/apps/resto-ka/frontend immo-ka|M4M64a|~/apps/immo-ka/immoka|~/apps/immo-ka/frontend fabri-ka|M4M64a|~/fabri-ka/fabrika|~/fabri-ka/frontend auto-ka|M4M64b|~/auto-ka/autoka|~/auto-ka/frontend food-ka|M4M64b|~/apps/food-ka/foodka|~/apps/food-ka/frontend sorti-ka|M3U96a|~/apps/sorti-ka/sortika|~/apps/sorti-ka/frontend job-ka|M3U96a|~/apps/job-ka/jobka|~/apps/job-ka/frontend " only=("$@") for line in $MAP; do IFS='|' read -r app node pkg front <<<"$line" if [ ${#only[@]} -gt 0 ]; then case " ${only[*]} " in *" $app "*) ;; *) continue ;; esac fi echo "→ $app ($node)" if [ "$node" = "M3U96a" ]; then cp kaid.py "${pkg/#\~/$HOME}/" && for d in public dist .; do dir="${front/#\~/$HOME}/$d" [ -d "$dir" ] && cp ka-id.js "$dir/" && echo " ka-id.js → $d" done else scp -q kaid.py "$node:$pkg/" && ssh "$node" "for d in public dist .; do [ -d $front/\$d ] && cp /tmp/ka-id.js.$$ $front/\$d/ 2>/dev/null; done" 2>/dev/null scp -q ka-id.js "$node:/tmp/ka-id.js.$$" && ssh "$node" "for d in public dist; do [ -d $front/\$d ] && cp /tmp/ka-id.js.$$ $front/\$d/ka-id.js && echo \" ka-id.js → \$d\"; done; [ -f $front/index.html ] && cp /tmp/ka-id.js.$$ $front/ka-id.js && echo ' ka-id.js → frontend/'; rm -f /tmp/ka-id.js.$$" fi echo " ok" done echo "Terminé. Intégration par app : voir kaid/README-KAID.md."