#!/usr/bin/env bash
# Build a zip archive for uploading to cPanel (no venv, no secrets).
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
PARENT="$(dirname "$ROOT")"
NAME="$(basename "$ROOT")"
OUT="${PARENT}/${NAME}-cpanel-upload.zip"
STAGING="${PARENT}/.${NAME}-cpanel-staging"
WITH_DB=0
WITH_MEDIA=0

for arg in "$@"; do
  case "$arg" in
    --with-db) WITH_DB=1 ;;
    --with-media) WITH_MEDIA=1 ;;
    -h|--help)
      echo "Usage: $0 [--with-db] [--with-media]"
      echo "Creates: ${OUT}"
      echo "  Default: excludes db.sqlite3 and media/ (re-seed or upload media separately)."
      exit 0
      ;;
  esac
done

RSYNC_EXCLUDES=(
  --exclude '.git'
  --exclude '.venv'
  --exclude '.venv-mac'
  --exclude '__pycache__'
  --exclude '*.pyc'
  --exclude '.env'
  --exclude '.claude'
  --exclude 'django_errors.log'
  --exclude 'server.log'
  --exclude 'out.txt'
  --exclude 'staticfiles'
  --exclude '.DS_Store'
)

if [[ "$WITH_DB" -eq 0 ]]; then
  RSYNC_EXCLUDES+=(--exclude 'db.sqlite3')
fi

if [[ "$WITH_MEDIA" -eq 0 ]]; then
  RSYNC_EXCLUDES+=(--exclude 'media')
fi

rm -rf "$STAGING"
mkdir -p "$STAGING"
rsync -a "${RSYNC_EXCLUDES[@]}" "$ROOT/" "$STAGING/$NAME/"

rm -f "$OUT"
(
  cd "$STAGING"
  zip -r -q "$OUT" "$NAME"
)
rm -rf "$STAGING"

echo "Created: $OUT"
echo "Size:    $(du -h "$OUT" | cut -f1)"
[[ "$WITH_DB" -eq 0 ]] && echo "Tip: --with-db to include local db.sqlite3"
[[ "$WITH_MEDIA" -eq 0 ]] && echo "Tip: --with-media to include uploads (~400MB+)"
