#!/bin/bash

# Create deployment package for Laravel application
# This script creates a ZIP file excluding development files

PROJECT_NAME="catalogue-builder"
DEPLOY_DIR="deployment-package"
ZIP_NAME="${PROJECT_NAME}-deployment-$(date +%Y%m%d-%H%M%S).zip"

echo "Creating deployment package..."
echo "Project: $PROJECT_NAME"
echo "Output: $ZIP_NAME"
echo ""

# Create temporary directory structure
mkdir -p "$DEPLOY_DIR"

# Copy files excluding unnecessary ones
echo "Copying files..."

# Use rsync if available, otherwise use cp with find
if command -v rsync &> /dev/null; then
    rsync -av --exclude='.git' \
          --exclude='.env' \
          --exclude='vendor' \
          --exclude='node_modules' \
          --exclude='storage/logs/*' \
          --exclude='storage/framework/cache/*' \
          --exclude='storage/framework/sessions/*' \
          --exclude='storage/framework/views/*' \
          --exclude='storage/framework/testing/*' \
          --exclude='bootstrap/cache/*' \
          --exclude='database.sqlite' \
          --exclude='ngrok.exe' \
          --exclude='tests' \
          --exclude='.phpunit.result.cache' \
          --exclude='dev-server.php' \
          --exclude='.vscode' \
          --exclude='.idea' \
          --exclude='*.log' \
          --exclude='.DS_Store' \
          --exclude='Thumbs.db' \
          . "$DEPLOY_DIR/"
else
    # Fallback to find and cp
    find . -type f ! -path './.git/*' \
          ! -path './.env' \
          ! -path './vendor/*' \
          ! -path './node_modules/*' \
          ! -path './storage/logs/*' \
          ! -path './storage/framework/cache/data/*' \
          ! -path './storage/framework/sessions/*' \
          ! -path './storage/framework/views/*' \
          ! -path './storage/framework/testing/*' \
          ! -path './bootstrap/cache/*' \
          ! -name 'database.sqlite' \
          ! -name 'ngrok.exe' \
          ! -path './tests/*' \
          ! -name '.phpunit.result.cache' \
          ! -name 'dev-server.php' \
          ! -path './.vscode/*' \
          ! -path './.idea/*' \
          ! -name '*.log' \
          ! -name '.DS_Store' \
          ! -name 'Thumbs.db' \
    | while read file; do
        dir=$(dirname "$file")
        mkdir -p "$DEPLOY_DIR/$dir"
        cp "$file" "$DEPLOY_DIR/$file"
    done
    
    # Copy directories that might be empty
    mkdir -p "$DEPLOY_DIR/storage/logs"
    mkdir -p "$DEPLOY_DIR/storage/framework/cache/data"
    mkdir -p "$DEPLOY_DIR/storage/framework/sessions"
    mkdir -p "$DEPLOY_DIR/storage/framework/views"
    mkdir -p "$DEPLOY_DIR/storage/framework/testing"
    mkdir -p "$DEPLOY_DIR/bootstrap/cache"
    touch "$DEPLOY_DIR/storage/logs/.gitkeep"
    touch "$DEPLOY_DIR/storage/framework/cache/data/.gitkeep"
    touch "$DEPLOY_DIR/storage/framework/sessions/.gitkeep"
    touch "$DEPLOY_DIR/storage/framework/views/.gitkeep"
    touch "$DEPLOY_DIR/storage/framework/testing/.gitkeep"
    touch "$DEPLOY_DIR/bootstrap/cache/.gitkeep"
fi

echo "Creating ZIP file..."
cd "$DEPLOY_DIR"
zip -r "../$ZIP_NAME" . -q
cd ..

echo ""
echo "Cleaning up temporary directory..."
rm -rf "$DEPLOY_DIR"

echo ""
echo "✅ Deployment package created: $ZIP_NAME"
echo ""
echo "Package includes:"
echo "  ✓ All application files"
echo "  ✓ Configuration files"
echo "  ✓ Migrations and seeders"
echo "  ✓ Public assets"
echo ""
echo "Package excludes:"
echo "  ✗ .env (create on server)"
echo "  ✗ vendor/ (run composer install)"
echo "  ✗ node_modules/ (run npm install if needed)"
echo "  ✗ Development files"
echo ""


