#!/bin/bash

# WooNooW Plugin - Production Build Script
# This script creates a production-ready zip file of the plugin

set -e  # Exit on error

PLUGIN_NAME="woonoow"
VERSION=$(grep "Version:" woonoow.php | awk '{print $3}')
BUILD_DIR="build"
DIST_DIR="dist"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
ZIP_NAME="${PLUGIN_NAME}-${VERSION}-${TIMESTAMP}.zip"

echo "=========================================="
echo "WooNooW Production Build"
echo "=========================================="
echo "Plugin: ${PLUGIN_NAME}"
echo "Version: ${VERSION}"
echo "Timestamp: ${TIMESTAMP}"
echo "=========================================="

# Clean previous builds
echo "Cleaning previous builds..."
rm -rf ${BUILD_DIR}
mkdir -p ${BUILD_DIR}/${PLUGIN_NAME}
mkdir -p ${DIST_DIR}

# Copy plugin files
echo "Copying plugin files..."
rsync -av --progress \
  --exclude='node_modules' \
  --exclude='.git' \
  --exclude='.gitignore' \
  --exclude='build' \
  --exclude='dist' \
  --exclude='*.log' \
  --exclude='.DS_Store' \
  --exclude='customer-spa' \
  --exclude='admin-spa' \
  --exclude='examples' \
  --exclude='*.sh' \
  --exclude='/*.md' \
  --exclude='archive' \
  --exclude='test-*.php' \
  --exclude='check-*.php' \
  ./ ${BUILD_DIR}/${PLUGIN_NAME}/

# Verify production builds exist in source before copying
echo "Verifying production builds..."
if [ ! -f "customer-spa/dist/app.js" ]; then
  echo "ERROR: Customer SPA production build not found!"
  echo "Please run: cd customer-spa && npm run build"
  exit 1
fi

if [ ! -f "admin-spa/dist/app.js" ]; then
  echo "ERROR: Admin SPA production build not found!"
  echo "Please run: cd admin-spa && npm run build"
  exit 1
fi

echo "✓ Customer SPA build verified ($(du -h customer-spa/dist/app.js | cut -f1))"
echo "✓ Admin SPA build verified ($(du -h admin-spa/dist/app.js | cut -f1))"

# Copy only essential SPA build files
echo "Copying SPA build files..."
mkdir -p ${BUILD_DIR}/${PLUGIN_NAME}/customer-spa/dist
mkdir -p ${BUILD_DIR}/${PLUGIN_NAME}/admin-spa/dist

# Customer SPA - app.js, app.css, and fonts
cp customer-spa/dist/app.js ${BUILD_DIR}/${PLUGIN_NAME}/customer-spa/dist/
cp customer-spa/dist/app.css ${BUILD_DIR}/${PLUGIN_NAME}/customer-spa/dist/
if [ -d "customer-spa/dist/fonts" ]; then
  cp -r customer-spa/dist/fonts ${BUILD_DIR}/${PLUGIN_NAME}/customer-spa/dist/
  echo "✓ Copied customer-spa fonts"
fi

# Admin SPA - app.js and app.css
cp admin-spa/dist/app.js ${BUILD_DIR}/${PLUGIN_NAME}/admin-spa/dist/
cp admin-spa/dist/app.css ${BUILD_DIR}/${PLUGIN_NAME}/admin-spa/dist/

echo "✓ Copied customer-spa: app.js ($(du -h customer-spa/dist/app.js | cut -f1)), app.css ($(du -h customer-spa/dist/app.css | cut -f1))"
echo "✓ Copied admin-spa: app.js ($(du -h admin-spa/dist/app.js | cut -f1)), app.css ($(du -h admin-spa/dist/app.css | cut -f1))"

# Create zip file
echo "Creating zip file..."
cd ${BUILD_DIR}
zip -r ../${DIST_DIR}/${ZIP_NAME} ${PLUGIN_NAME} -q
cd ..

# Calculate file size
FILE_SIZE=$(du -h ${DIST_DIR}/${ZIP_NAME} | cut -f1)

echo "=========================================="
echo "✓ Production build complete!"
echo "=========================================="
echo "File: ${DIST_DIR}/${ZIP_NAME}"
echo "Size: ${FILE_SIZE}"
echo "=========================================="

# Clean up build directory
echo "Cleaning up..."
rm -rf ${BUILD_DIR}

echo "Done! 🚀"
