#!/bin/bash
# Phase A : backup + snapshot consts AVANT + staging + lint php8.1. Abort si lint KO. Ne touche PAS le live custom/einvoicing (sauf backup en copie).
set -e
DROOT="$HOME/pichinov/dolibarr/htdocs"
LIVE="$DROOT/custom/einvoicing"
TGZ="$HOME/pichinov/einvoicing-120-handoff.tgz"
ST="$HOME/pichinov/_stage_einv120"
TS=$(date +%Y%m%d-%H%M%S)
BK="$HOME/pichinov/backups/einv-maj120-$TS"

echo "TS=$TS"
echo "BK=$BK"
mkdir -p "$BK"

echo "=== 1) BACKUP arbre live (cp -a) ==="
cp -a "$LIVE" "$BK/einvoicing"
echo "backup arbre: $(find "$BK/einvoicing" -type f | wc -l) fichiers"

echo "=== 2) SNAPSHOT consts EINVOICING_% AVANT ==="
php "$HOME/pichinov/_stage_einv120_scripts/consts_snapshot.php" > "$BK/consts_before.txt" 2>/dev/null
echo "consts AVANT: $(wc -l < "$BK/consts_before.txt") constantes -> $BK/consts_before.txt"
echo "  (contrôle proxy AVANT :)"
grep -E "^EINVOICING_PDP\b|^EINVOICING_SUPERPDP_VIAPARTNER\b" "$BK/consts_before.txt" | sed 's/\t/ = /'

echo "=== 3) STAGING : extraction tgz ==="
rm -rf "$ST"; mkdir -p "$ST/einvoicing"
tar -xzf "$TGZ" -C "$ST/einvoicing"
echo "staging VERSION = $(cat "$ST/einvoicing/VERSION")"
echo "staging fichiers = $(find "$ST/einvoicing" -type f | wc -l)"

echo "=== 4) LINT php (8.1 Ridin) hors vendor ==="
NB=$(find "$ST/einvoicing" -name '*.php' ! -path '*/vendor/*' | wc -l)
LINT_ERR=$(find "$ST/einvoicing" -name '*.php' ! -path '*/vendor/*' | while read -r f; do php -l "$f" >/dev/null 2>&1 || echo "$f"; done)
if [ -n "$LINT_ERR" ]; then
  echo "!!! LINT ERRORS (abort avant swap) :"; echo "$LINT_ERR"
  echo "ABORT_LINT"; exit 3
fi
echo "lint OK sur $NB fichiers php (hors vendor)"

echo "=== 5) vendor autoload ==="
php -r "require '$ST/einvoicing/vendor/autoload.php'; echo 'autoload OK'.PHP_EOL;" 2>&1 | tail -1 || { echo "AUTOLOAD KO"; exit 4; }

# Mémorise le TS pour la phase B
echo "$TS" > "$HOME/pichinov/_stage_einv120_TS"
echo "=== PHASE A OK — TS=$TS — prêt pour le swap ==="
