#!/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/conversion_costos_v4_7_3_$MARCA"
STOCK="app/includes/stock_functions.php"
ESTATICOS=("app/includes/item_select_v3.php" "public/costos_v3.php")
TODOS=("$STOCK" "${ESTATICOS[@]}")
if [ ! -f "$DESTINO/$STOCK" ] || [ ! -d "$DESTINO/public" ]; then echo "ERROR: instalación no reconocida en $DESTINO"; exit 1; fi
for archivo in "${ESTATICOS[@]}" "paso/parchear_stock_functions.php"; do [ -f "$ORIGEN/$archivo" ] || { echo "ERROR: falta $archivo"; exit 1; }; php -l "$ORIGEN/$archivo" || exit 1; done
mkdir -p "$RESPALDO/app/includes" "$RESPALDO/public"
for archivo in "${TODOS[@]}"; do if [ -f "$DESTINO/$archivo" ]; then cp -p "$DESTINO/$archivo" "$RESPALDO/$archivo"; else echo "$archivo" >> "$RESPALDO/NUEVOS.txt"; fi; done
printf '%s\n' "${TODOS[@]}" > "$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"; }
trap 'restaurar' ERR
TEMP_STOCK="$(mktemp "$DESTINO/respaldos/stock_functions_v4_7_3_XXXXXX.php")"
php "$ORIGEN/paso/parchear_stock_functions.php" "$RESPALDO/$STOCK" "$TEMP_STOCK"
php -l "$TEMP_STOCK"
cp -p "$TEMP_STOCK" "$DESTINO/$STOCK"
mv "$TEMP_STOCK" "$RESPALDO/stock_functions_validado.php"
for archivo in "${ESTATICOS[@]}"; do cp -p "$ORIGEN/$archivo" "$DESTINO/$archivo"; php -l "$DESTINO/$archivo" >/dev/null; done
php -l "$DESTINO/$STOCK" >/dev/null
trap - ERR
echo "Conversión de costos v4.7.3 instalada correctamente."
echo "Respaldo: $RESPALDO"
echo "Prueba sugerida: Hallulla debe valorar 500 ml de agua a partir del costo por litro."

