#!/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/selectores_items_v4_7_$MARCA"
ARCHIVOS=(
  "app/includes/item_select_v3.php"
  "app/includes/crud_v3.php"
  "public/venta_directa_v3.php"
  "public/venta_editar_v3.php"
  "public/recetas_v3.php"
  "public/productos_v3.php"
  "public/compra_editar_v3.php"
  "public/presupuesto_editar_v3.php"
  "public/ajuste_stock_v3.php"
  "public/item_variantes_v3.php"
  "public/produccion_v3.php"
  "public/costos_v3.php"
)
if [ ! -d "$DESTINO/public" ] || [ ! -d "$DESTINO/app/includes" ]; then echo "ERROR: instalación no reconocida en $DESTINO"; exit 1; fi
for archivo in "${ARCHIVOS[@]}"; do
  [ -f "$ORIGEN/$archivo" ] || { echo "ERROR: falta $archivo"; exit 1; }
  php -l "$ORIGEN/$archivo" >/dev/null || { echo "ERROR PHP en $archivo"; exit 1; }
done
mkdir -p "$RESPALDO/app/includes" "$RESPALDO/public"
for archivo in "${ARCHIVOS[@]}"; do if [ -f "$DESTINO/$archivo" ]; then cp -p "$DESTINO/$archivo" "$RESPALDO/$archivo"; else echo "$archivo" >> "$RESPALDO/NUEVOS.txt"; fi; done
printf '%s\n' "${ARCHIVOS[@]}" > "$RESPALDO/ARCHIVOS.txt"
restaurar(){
  while IFS= read -r archivo; do if [ -f "$RESPALDO/$archivo" ]; then cp -p "$RESPALDO/$archivo" "$DESTINO/$archivo"; fi; done < "$RESPALDO/ARCHIVOS.txt"
  if [ -f "$RESPALDO/NUEVOS.txt" ]; then while IFS= read -r archivo; do if [ -f "$DESTINO/$archivo" ]; then mv "$DESTINO/$archivo" "$RESPALDO/archivo_nuevo_retirado_$(basename "$archivo")"; fi; done < "$RESPALDO/NUEVOS.txt"; fi
}
trap 'restaurar' ERR
for archivo in "${ARCHIVOS[@]}"; do mkdir -p "$DESTINO/$(dirname "$archivo")"; cp -p "$ORIGEN/$archivo" "$DESTINO/$archivo"; done
for archivo in "${ARCHIVOS[@]}"; do php -l "$DESTINO/$archivo" >/dev/null; done
trap - ERR
echo "Selectores de ítems v4.7 instalados correctamente."
echo "Respaldo: $RESPALDO"

