#!/usr/bin/env bash
# CDN 部署：打包单一运行时包 + 生成上传清单
#
#   bash tools/deploy-cdn.sh
#   bash tools/deploy-cdn.sh --with-static
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"

usage() {
  cat <<'EOF'
CDN 部署（usecdn:true）

  bash tools/deploy-cdn.sh                 # 打包 + 清单
  bash tools/deploy-cdn.sh --with-static   # 同时同步 static/unity

产物:
  build/mstest5/           运行时包 ← 上传 OSS（与本地 static/unity 相同）
  build/deploy/            上传清单（不进 OSS）
  build/standalone-player/ 独立调试页（不进 OSS）
EOF
}

CDN_BASE=""
SKIP_VERIFY=0
SKIP_PACK=0
DRY_RUN=0
UPLOAD_ONLY=0
WITH_STATIC=0

while [[ $# -gt 0 ]]; do
  case "$1" in
    --build) BUILD_DIR="$2"; shift 2 ;;
    --code-html) CODE_HTML="$2"; shift 2 ;;
    --cdn-base) CDN_BASE="$2"; shift 2 ;;
    --upload-only) UPLOAD_ONLY=1; shift ;;
    --with-static) WITH_STATIC=1; shift ;;
    --skip-verify) SKIP_VERIFY=1; shift ;;
    --skip-pack) SKIP_PACK=1; shift ;;
    --dry-run) DRY_RUN=1; shift ;;
    -h|--help) usage; exit 0 ;;
    *) echo "未知参数: $1" >&2; usage; exit 1 ;;
  esac
done

BUILD_DIR="${BUILD_DIR:-$PROJECT_DIR/build/web-desktop}"
CODE_HTML="${CODE_HTML:-$HOME/tfrh/001code/001code-html}"

ARGS=(--build "$BUILD_DIR" --code-html "$CODE_HTML")
[[ -n "$CDN_BASE" ]] && ARGS+=(--cdn-base "$CDN_BASE")
[[ "$SKIP_PACK" -eq 1 ]] && ARGS+=(--skip-pack)
[[ "$DRY_RUN" -eq 1 ]] && ARGS+=(--dry-run)
[[ "$UPLOAD_ONLY" -eq 1 ]] && ARGS+=(--cdn-upload-only)
[[ "$WITH_STATIC" -eq 0 ]] && ARGS+=(--cdn-pure)
[[ -n "${UNITY_REF:-}" ]] && ARGS+=(--unity-ref "$UNITY_REF")

bash "$SCRIPT_DIR/deploy-to-001code.sh" "${ARGS[@]}"

echo ""
echo "==> 上传 build/mstest5/ 全部 → config.js unitycdndir"
echo "==> 清单 build/deploy/UPLOAD-MANIFEST.txt"
