#!/bin/bash
# Hosting'e yüklemeden önce yerelde çalıştırın.
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
OUT="$ROOT/deploy/hosting/package"
PHP="${PHP:-php}"

if [ -x "/Applications/XAMPP/xamppfiles/bin/php" ]; then
  PHP="/Applications/XAMPP/xamppfiles/bin/php"
fi

echo ">> Ön kontroller"
test -f "$ROOT/resources/data/blog/posts.json" || { echo "HATA: resources/data/blog/posts.json eksik"; exit 1; }

echo ">> View önbelleği temizleniyor"
"$PHP" "$ROOT/artisan" view:clear

echo ">> Frontend derlemesi"
if command -v npm >/dev/null 2>&1; then
  (cd "$ROOT" && npm ci && npm run build)
else
  test -f "$ROOT/public/build/manifest.json" || { echo "HATA: public/build/manifest.json yok. npm run build çalıştırın."; exit 1; }
fi

echo ">> Composer (production)"
cd "$ROOT"
composer install --no-dev --optimize-autoloader

echo ">> Paket klasörü hazırlanıyor: $OUT"
rm -rf "$OUT"
mkdir -p "$OUT/public_html" "$OUT/likaweb"

echo ">> Laravel dosyaları (likaweb/)"
rsync -a \
  --exclude='node_modules' \
  --exclude='.git' \
  --exclude='tests' \
  --exclude='deploy' \
  --exclude='public' \
  "$ROOT/" "$OUT/likaweb/"

echo ">> Yerel önbellek dosyaları paketten çıkarılıyor"
for dir in \
  "$OUT/likaweb/storage/framework/views" \
  "$OUT/likaweb/storage/logs" \
  "$OUT/likaweb/storage/framework/sessions" \
  "$OUT/likaweb/bootstrap/cache"
do
  if [ -d "$dir" ]; then
    find "$dir" -mindepth 1 ! -name '.gitignore' -delete
  fi
done

echo ">> public_html (web root)"
cp "$ROOT/deploy/hosting/public_html/index.php" "$OUT/public_html/"
cp "$ROOT/deploy/hosting/public_html/.htaccess" "$OUT/public_html/"
cp "$ROOT/deploy/hosting/public_html/check.php" "$OUT/public_html/"
rsync -a "$ROOT/public/" "$OUT/public_html/"

echo ">> Blog verisi"
test -f "$OUT/likaweb/resources/data/blog/posts.json" || { echo "HATA: posts.json pakete eklenmedi"; exit 1; }

echo ">> .env şablonu"
cp "$ROOT/deploy/hosting/likaweb.env.example" "$OUT/likaweb/.env.example"

echo ""
echo "Hazır: $OUT"
echo "1) likaweb/.env dosyasını hosting bilgileriyle oluşturun"
echo "2) public_html + likaweb klasörlerini sunucuya yükleyin"
echo "3) likaweb içinde: php artisan key:generate && php artisan migrate --force"
echo "4) public_html içinde storage symlink: ln -s ../likaweb/storage/app/public storage"
echo "5) likaweb/storage ve likaweb/bootstrap/cache izinlerini 775 yapın"
echo "6) check.php ile test edin, sonra silin"
