#!/bin/bash
# prepare-deploy.sh - Build and package Next.js standalone for cPanel deployment
# Usage: bash prepare-deploy.sh
set -e

PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
DEPLOY_DIR="$PROJECT_DIR/deploy"
STANDALONE_DIR="$PROJECT_DIR/.next/standalone"

echo "=== Step 1: Clean previous deploy ==="
rm -rf "$DEPLOY_DIR"
rm -f "$PROJECT_DIR/deploy.zip"

echo "=== Step 2: Build Next.js (standalone) ==="
cd "$PROJECT_DIR"
npm run build

echo "=== Step 3: Assemble deploy package ==="
mkdir -p "$DEPLOY_DIR"

# Copy standalone output (server.js, package.json, node_modules, .next, src, etc.)
cp -r "$STANDALONE_DIR/"* "$DEPLOY_DIR/"
cp -r "$STANDALONE_DIR/.next" "$DEPLOY_DIR/.next"

# Copy Passenger entry point
cp "$PROJECT_DIR/app.js" "$DEPLOY_DIR/app.js"

# Copy static assets (not included in standalone build)
echo "--- Copying .next/static/ ---"
cp -r "$PROJECT_DIR/.next/static" "$DEPLOY_DIR/.next/static"

# Copy public directory
echo "--- Copying public/ ---"
cp -r "$PROJECT_DIR/public" "$DEPLOY_DIR/public"

# Copy .env.local as .env for production
if [ -f "$PROJECT_DIR/.env.local" ]; then
  echo "--- Copying .env.local as .env ---"
  cp "$PROJECT_DIR/.env.local" "$DEPLOY_DIR/.env"
fi

# Create required empty directories
mkdir -p "$DEPLOY_DIR/uploads/cvs"
mkdir -p "$DEPLOY_DIR/data"

echo "=== Step 4: Create deploy.zip ==="
cd "$DEPLOY_DIR"
if command -v zip &> /dev/null; then
  zip -r "$PROJECT_DIR/deploy.zip" . -x "*.git*"
  echo "Created: $PROJECT_DIR/deploy.zip"
else
  echo "WARNING: zip not found. Creating tar.gz instead."
  tar -czf "$PROJECT_DIR/deploy.tar.gz" .
  echo "Created: $PROJECT_DIR/deploy.tar.gz"
fi

echo ""
echo "=== Deploy package ready! ==="
echo "Contents of deploy/:"
ls -la "$DEPLOY_DIR"
echo ""
echo "=== Next steps ==="
echo "1. Upload deploy.zip to your cPanel server"
echo "2. Extract in the application root directory"
echo "3. In cPanel > Setup Node.js App:"
echo "   - Node.js version: 18.x"
echo "   - Application mode: Production"
echo "   - Startup file: app.js"
echo "4. Set environment variables in cPanel panel"
echo "5. Click 'Run NPM Install' (optional, modules are included)"
echo "6. Start/Restart the application"
