#!/usr/bin/env bash
# Genera un ZIP portable para cPanel (sin Docker): código + vendor de producción.
# Sube el ZIP a cPanel, extrae SOBRE el docroot (apuntando el dominio a public/),
# crea el .env y corre las migraciones desde la Terminal de cPanel.
set -euo pipefail
cd "$(dirname "$0")/.."

OUT="dist/app-cpanel.zip"
mkdir -p dist

echo ">> composer install --no-dev (vendor de producción)"
if command -v composer >/dev/null 2>&1; then
    composer install --no-dev --prefer-dist --optimize-autoloader
else
    docker compose exec -T web composer install --no-dev --prefer-dist --optimize-autoloader
fi

if ! command -v zip >/dev/null 2>&1; then
    echo "!! 'zip' no está instalado. Genera el ZIP con tu gestor de archivos o, en Windows:"
    echo "   PowerShell:  Compress-Archive -Path public,src,views,routes,database,bin,storage,vendor,bootstrap.php,composer.json,composer.lock -DestinationPath dist/app-cpanel.zip -Force"
    echo "   (recuerda EXCLUIR el .env y storage/logs/*.log)"
    exit 1
fi

echo ">> Empaquetando ${OUT} (solo lo necesario para ejecutar + instalador web)"
rm -f "${OUT}"
# SOLO lo necesario para correr en cPanel: código, vistas, rutas, migraciones/seed,
# bin (para el cron), storage (dirs escribibles) y vendor de producción. Incluye el
# autoinstalador public/install.php. Se EXCLUYEN docs, .env, logs y subidas.
zip -r "${OUT}" \
    public src views routes database bin storage bootstrap.php composer.json composer.lock vendor \
    -x '*.git*' \
    -x 'storage/logs/*.log' \
    -x 'storage/cache/*' \
    -x 'storage/uploads/*' \
    -x 'storage/*.lock' \
    -x 'storage/installed.lock' \
    -x '*.env' \
    -x '*.env.*' \
    -x 'database/*.sqlite' \
    -x 'tests/*' \
    -x '*/.DS_Store' >/dev/null

echo ">> Hecho: ${OUT}"
echo "   1) Sube y descomprime en cPanel; apunta el dominio al subdirectorio public/."
echo "   2) Abre  https://TU-DOMINIO/install.php  y sigue el asistente."
echo "   3) BORRA public/install.php al terminar. El .env se crea fuera de public/."
echo "   4) Cron diario (notificaciones):  php $(pwd)/bin/console worker:risk-scan"
