#!/bin/bash
# Phase B refresh : lint staging + swap rsync --delete + vérifs. PAS d'init, PAS de migration.
set -e
DROOT="$HOME/pichinov/dolibarr/htdocs"
LIVE="$DROOT/custom/einvoicing"
RF="$HOME/pichinov/_refresh_einv"
SCRIPTS="$HOME/pichinov/_stage_einv120_scripts"
TS=$(grep '^TS=' "$RF/_TS" | cut -d= -f2-)
TREE=$(grep '^TREE=' "$RF/_TS" | cut -d= -f2-)
BK="$HOME/pichinov/backups/einvoicing-refresh-$TS"
echo "TS=$TS"; echo "TREE=$TREE"; echo "BK=$BK"
[ -f "$TREE/VERSION" ] || { echo "staging manquant"; exit 2; }
[ -f "$BK/consts_before.txt" ] || { echo "snapshot AVANT manquant"; exit 2; }
[ -d "$TREE/vendor" ] || { echo "vendor manquant dans staging"; exit 2; }

echo "=== LINT staging (php8.1) hors vendor ==="
NB=$(find "$TREE" -name '*.php' ! -path '*/vendor/*' | wc -l)
ERR=$(find "$TREE" -name '*.php' ! -path '*/vendor/*' | while read -r f; do php -l "$f" >/dev/null 2>&1 || echo "$f"; done)
[ -n "$ERR" ] && { echo "!!! LINT KO (abort avant swap):"; echo "$ERR"; exit 3; }
echo "lint OK sur $NB fichiers"
php -r "require '$TREE/vendor/autoload.php'; echo 'autoload OK'.PHP_EOL;" 2>&1 | tail -1

echo "=== SWAP : rsync -a --delete (staging -> live) ==="
rsync -a --delete --exclude='.git' --chmod=D755,F644 "$TREE/" "$LIVE/"
echo "live VERSION = $(cat "$LIVE/VERSION")"

echo "=== consts APRÈS + diff (doit être inchangé, aucune modif DB) ==="
php "$SCRIPTS/consts_snapshot.php" > "$BK/consts_after.txt" 2>/dev/null
if diff "$BK/consts_before.txt" "$BK/consts_after.txt" >/dev/null; then echo "CONSTS INCHANGÉES ✅ (proxy préservé)"; else echo "!!! CONSTS MODIFIÉES:"; diff "$BK/consts_before.txt" "$BK/consts_after.txt"; fi

echo "=== VÉRIFS refresh ==="
echo "  #710 STATUS_REJECTED (=3 attendu): $(grep -c "STATUS_REJECTED" "$LIVE/class/actions_einvoicing.class.php" 2>/dev/null || echo absent)"
echo "  onglet Suivi einvoice_tracking.php: $([ -f "$LIVE/einvoice_tracking.php" ] && echo OK || echo MANQUE)"
echo "  lifecycle lib: $([ -f "$LIVE/lib/einvoicing_lifecycle.lib.php" ] && echo OK || echo MANQUE)"
echo "  providershort preg_replace ViaPartner: $(grep -c "preg_replace('/ViaPartner" "$LIVE/class/providers/SuperPDPProvider.class.php" 2>/dev/null || echo 0)"
echo "--- vérifs communes (VERSION, proxy consts, menu, table) ---"
php "$SCRIPTS/verify120.php"

echo "=== LINT live échantillon runtime ==="
for f in class/providers/SuperPDPProvider.class.php core/modules/modEInvoicing.class.php public/proxy_oauthcallback.php einvoice_tracking.php lib/einvoicing_lifecycle.lib.php class/actions_einvoicing.class.php sync_pending_list.php; do
  if [ -f "$LIVE/$f" ]; then php -l "$LIVE/$f" >/dev/null 2>&1 && echo "  OK $f" || echo "  !!! KO $f"; else echo "  (absent) $f"; fi
done
echo "=== REFRESH TERMINÉ (TS=$TS) ==="
