#!/usr/bin/env bash
set -Eeuo pipefail
BASE="${1:-/home/iotcuboc/pyme}"; PAQUETE="$(cd "$(dirname "$0")" && pwd)"; MARCA="$(date +%Y%m%d_%H%M%S)"
RESPALDO="$BASE/respaldos/rendimiento_recetas_v5_4_$MARCA"
[[ -f "$BASE/public/recetas_v3.php" && -f "$BASE/config/db.php" ]] || { echo "ERROR: faltan archivos requeridos." >&2; exit 1; }
for f in "$PAQUETE/paso/parchear_recetas.php" "$PAQUETE/paso/migrar_rendimiento.php" "$PAQUETE/paso/restaurar_datos.php"; do php -l "$f"; done
mkdir -p "$RESPALDO/public" "$RESPALDO/preparados"
cp -p "$BASE/public/recetas_v3.php" "$RESPALDO/public/recetas_v3.php"
php "$PAQUETE/paso/parchear_recetas.php" "$RESPALDO/public/recetas_v3.php" "$RESPALDO/preparados/recetas_v3.php"
php -l "$RESPALDO/preparados/recetas_v3.php"
MIGRADO=0
restaurar_error(){ local c=$?; cp -p "$RESPALDO/public/recetas_v3.php" "$BASE/public/recetas_v3.php" || true; if [[ "$MIGRADO" == 1 && -f "$RESPALDO/rendimiento_recetas.json" ]]; then php "$PAQUETE/paso/restaurar_datos.php" "$RESPALDO/rendimiento_recetas.json" "$BASE" || true; fi; echo "ERROR: instalación cancelada en línea ${BASH_LINENO[0]} (código $c). Archivo restaurado." >&2; }
trap restaurar_error ERR
php "$PAQUETE/paso/migrar_rendimiento.php" "$RESPALDO" "$BASE"; MIGRADO=1
cp -p "$RESPALDO/preparados/recetas_v3.php" "$BASE/public/recetas_v3.php"
php -l "$BASE/public/recetas_v3.php"
trap - ERR
echo "Rendimiento de recetas v5.4 instalado correctamente."
echo "Respaldo: $RESPALDO"

