#!/usr/bin/env bash
set -euo pipefail

DESTINO="${1:-/home/iotcuboc/pyme}"
ORIGEN="$(cd "$(dirname "$0")" && pwd)"
MARCA="$(date +%Y%m%d_%H%M%S)"
RESPALDO="$DESTINO/respaldos/modulo_costos_v4_6_$MARCA"
ARCHIVOS=("public/costos_v3.php" "public/mas_v3.php")

if [ ! -d "$DESTINO/public" ] || [ ! -d "$DESTINO/app/includes" ]; then
  echo "ERROR: no se reconoce la instalación en $DESTINO"
  exit 1
fi
if [ ! -f "$DESTINO/app/includes/stock_functions.php" ]; then
  echo "ERROR: falta app/includes/stock_functions.php"
  exit 1
fi
for archivo in "${ARCHIVOS[@]}"; do
  if [ ! -f "$ORIGEN/$archivo" ]; then echo "ERROR: falta $archivo en el paquete"; exit 1; fi
  if ! php -l "$ORIGEN/$archivo" >/dev/null; then echo "ERROR: sintaxis PHP inválida en $archivo"; exit 1; fi
done

mkdir -p "$RESPALDO/public"
for archivo in "${ARCHIVOS[@]}"; do
  if [ -f "$DESTINO/$archivo" ]; then cp -p "$DESTINO/$archivo" "$RESPALDO/$archivo"; fi
done
printf '%s\n' "${ARCHIVOS[@]}" > "$RESPALDO/ARCHIVOS.txt"

restaurar() {
  echo "Restaurando archivos anteriores..."
  for archivo in "${ARCHIVOS[@]}"; do
    if [ -f "$RESPALDO/$archivo" ]; then cp -p "$RESPALDO/$archivo" "$DESTINO/$archivo"; fi
  done
}
trap 'restaurar' ERR
for archivo in "${ARCHIVOS[@]}"; do cp -p "$ORIGEN/$archivo" "$DESTINO/$archivo"; done
for archivo in "${ARCHIVOS[@]}"; do php -l "$DESTINO/$archivo" >/dev/null; done
trap - ERR

echo "Módulo de Costos v4.6 instalado correctamente."
echo "Respaldo: $RESPALDO"
echo "Abrir: /public/costos_v3.php"
