#!/usr/bin/env bash
#
# deploy.sh — готовит проект Libro.az к загрузке на shared-хостинг.
#
# Что делает:
#   1. Собирает CSS (npm run build).
#   2. Копирует проект во временную папку БЕЗ «состояния»: .env, storage/,
#      public/photo/, public/.user.ini, node_modules/, vendor/, docker, .git.
#   3. Ставит только production-зависимости (composer install --no-dev).
#   4. Упаковывает всё в zip, готовый к загрузке.
#
# Использование:  ./deploy.sh   (или: make package)
set -euo pipefail

cd "$(dirname "$0")"

STAMP=$(date +%Y%m%d-%H%M%S)
ZIP="libro-deploy-${STAMP}.zip"
STAGE=$(mktemp -d)
trap 'rm -rf "$STAGE"' EXIT

echo "==> 1/4 Сборка фронтенда (npm run build)"
npm run build

echo "==> 2/4 Копирование проекта во временную папку (без «состояния»)"
rsync -a \
  --exclude '.env' \
  --exclude '.env.backup' \
  --exclude '.env.production' \
  --exclude 'storage/' \
  --exclude 'public/photo/' \
  --exclude 'public/.user.ini' \
  --exclude 'node_modules/' \
  --exclude 'vendor/' \
  --exclude '.git/' \
  --exclude '.DS_Store' \
  --exclude '.claude/' \
  --exclude 'dist/' \
  --exclude 'docker/' \
  --exclude 'docker-compose.yml' \
  --exclude 'Dockerfile' \
  --exclude 'deploy.sh' \
  --exclude 'supervisord.log' \
  --exclude 'supervisord.pid' \
  --exclude '*.zip' \
  ./ "$STAGE/"

# На всякий случай — папка для кэша фреймворка должна существовать и быть доступна на запись.
mkdir -p "$STAGE/bootstrap/cache" \
  "$STAGE/storage/framework/sessions" \
  "$STAGE/storage/framework/views" \
  "$STAGE/storage/framework/cache" \
  "$STAGE/storage/logs"

echo "==> 3/4 Установка production-зависимостей (composer install --no-dev)"
(cd "$STAGE" && composer install --no-dev --optimize-autoloader --no-interaction)

echo "==> 4/4 Упаковка в zip"
(cd "$STAGE" && zip -r -q "$OLDPWD/$ZIP" .)

SIZE=$(du -h "$ZIP" | cut -f1)
echo ""
echo "======================================================"
echo "✅ Готово: $ZIP  ($SIZE)"
echo ""
echo "Дальше на хостинге (в ~/public_html/libro.az):"
echo "  1) распаковать архив (или загрузить файлы, не трогая .env, storage/, public/photo/, public/.user.ini)"
echo "  2) /opt/cpanel/ea-php82/root/usr/bin/php artisan migrate --force"
echo "======================================================"
