#!/usr/bin/env bash
# Minka — crea el proyecto Laravel y superpone los archivos de este repositorio.
# ESTADO: NO VERIFICADO. No pudo ejecutarse en el entorno de desarrollo del agente
# porque el acceso a repo.packagist.org estaba bloqueado. Ejecutar en una máquina con
# PHP >= 8.3, Composer y Node. Revisar la salida antes de continuar.
set -euo pipefail

OVERLAY_DIR="$(cd "$(dirname "$0")/.." && pwd)"
TARGET="${1:-$OVERLAY_DIR/../minka-app}"

php -r 'exit(version_compare(PHP_VERSION, "8.3.0", ">=") ? 0 : 1);' || { echo "Se requiere PHP >= 8.3"; exit 1; }

# Laravel 13.x según el SRS. Si no existe o no es compatible, DETENERSE y documentarlo (SRS 4.1).
composer create-project "laravel/laravel:^13.0" "$TARGET" --no-interaction

# Superponer archivos de Minka sin pisar el núcleo de Laravel.
rsync -a --exclude '.git' --exclude 'scripts/bootstrap-laravel.sh' \
  --exclude 'docs/brand/preview.template.html' "$OVERLAY_DIR"/ "$TARGET"/
cp "$OVERLAY_DIR/resources/css/minka.css" "$TARGET/public/css/minka.css" 2>/dev/null \
  || { mkdir -p "$TARGET/public/css" && cp "$OVERLAY_DIR/resources/css/minka.css" "$TARGET/public/css/minka.css"; }

cd "$TARGET"
composer require --dev pestphp/pest pestphp/pest-plugin-laravel --with-all-dependencies --no-interaction
./vendor/bin/pest --init || true
# Laravel Pint suele venir incluido; si no:
composer require --dev laravel/pint --no-interaction || true

# Estructura modular del SRS 5.4
mkdir -p app/{Domain/{Identity,Organizations,Documents,Dossiers,Workflow,Rules,Tasks,Audit,Integrations},Application/{Identity,Documents,Dossiers,Workflow,Integrations},Infrastructure/{Persistence,Storage,Mail,Queue,Integrations}}
mkdir -p tests/{Unit,Feature,Integration,Security}

cp .env.example .env
php artisan key:generate
echo "Listo. Siguiente: configurar .env, ejecutar ./vendor/bin/pest y ./vendor/bin/pint --test"
