#!/usr/bin/env bash
set -u

PAQUETE_DIR="$(cd "$(dirname "$0")" && pwd)"
PROYECTO_DIR="${1:-/home/iotcuboc/pyme}"
MARCA="$(date +%Y%m%d_%H%M%S)"
RESPALDO_DIR="${PROYECTO_DIR}/respaldos/stock_agrupado_v4_5_${MARCA}"
ARCHIVO="public/stock_v3.php"

fallar(){ echo "ERROR: $1" >&2; exit 1; }
[ -d "$PROYECTO_DIR" ] || fallar "No existe el proyecto: $PROYECTO_DIR"
[ -f "$PROYECTO_DIR/$ARCHIVO" ] || fallar "No existe $ARCHIVO"
[ -f "$PAQUETE_DIR/$ARCHIVO" ] || fallar "Falta el archivo del parche"
command -v php >/dev/null 2>&1 || fallar "PHP CLI no está disponible"
php -l "$PAQUETE_DIR/$ARCHIVO" >/dev/null || fallar "El archivo del parche no tiene sintaxis PHP válida"

mkdir -p "$RESPALDO_DIR/public" || fallar "No se pudo crear el respaldo"
cp -p "$PROYECTO_DIR/$ARCHIVO" "$RESPALDO_DIR/$ARCHIVO" || fallar "No se pudo respaldar $ARCHIVO"
cp -p "$PAQUETE_DIR/$ARCHIVO" "$PROYECTO_DIR/$ARCHIVO" || {
  cp -p "$RESPALDO_DIR/$ARCHIVO" "$PROYECTO_DIR/$ARCHIVO"
  fallar "No se pudo instalar; se restauró el archivo anterior"
}
php -l "$PROYECTO_DIR/$ARCHIVO" >/dev/null || {
  cp -p "$RESPALDO_DIR/$ARCHIVO" "$PROYECTO_DIR/$ARCHIVO"
  fallar "Falló la validación final; se restauró el archivo anterior"
}

echo "Stock agrupado por código instalado correctamente."
echo "Respaldo: $RESPALDO_DIR"
echo "Para revertir: bash '$PAQUETE_DIR/RESTAURAR.sh' '$RESPALDO_DIR' '$PROYECTO_DIR'"
