#!/bin/bash
# 主部署脚本：打包 + 上传 + 部署
# 用法: bash deploy.sh <项目目录> <contactId> <项目名>

set -e

SCRIPT_DIR="$(dirname "$0")"
CONFIG_FILE="$HOME/.openclaw/cloud-deploy.json"

PROJECT_DIR="$1"
CONTACT_ID="$2"
PROJECT_NAME="$3"

if [ -z "$PROJECT_DIR" ] || [ -z "$CONTACT_ID" ] || [ -z "$PROJECT_NAME" ]; then
    echo "用法: bash deploy.sh <项目目录> <contactId> <项目名>"
    exit 1
fi

if [ ! -d "$PROJECT_DIR" ]; then
    echo "错误：项目目录不存在: $PROJECT_DIR"
    exit 1
fi

# 首次使用自动初始化配置
if [ ! -f "$CONFIG_FILE" ]; then
    echo "📝 首次使用，自动初始化配置..."
    bash "$SCRIPT_DIR/init-config.sh"
fi

# 确保已注册
TOKEN=$(python3 -c "import json; t=json.load(open('$CONFIG_FILE')).get('token'); print(t if t else '')" 2>/dev/null)
if [ -z "$TOKEN" ]; then
    echo "🔑 首次使用，正在注册..."
    bash "$SCRIPT_DIR/register.sh" "$CONTACT_ID"
    TOKEN=$(python3 -c "import json; print(json.load(open('$CONFIG_FILE'))['token'])" 2>/dev/null)
fi

API_URL=$(python3 -c "import json; print(json.load(open('$CONFIG_FILE'))['apiUrl'])")

# 打包
echo "📦 打包项目..."
PACK_OUTPUT=$(bash "$SCRIPT_DIR/pack.sh" "$PROJECT_DIR" "$PROJECT_NAME")
TAR_FILE=$(echo "$PACK_OUTPUT" | tail -1)

if [ ! -f "$TAR_FILE" ]; then
    echo "错误：打包失败"
    exit 1
fi

# 部署
echo "🚀 上传并部署中..."
START_TIME=$(date +%s)

RESPONSE=$(curl -s --max-time 120 \
    -X POST "$API_URL/deploy" \
    -H "Authorization: Bearer $TOKEN" \
    -F "file=@$TAR_FILE" \
    -F "contactId=$CONTACT_ID" \
    -F "projectName=$PROJECT_NAME" 2>/dev/null)

END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))

# 清理临时文件
rm -f "$TAR_FILE"

if [ -z "$RESPONSE" ]; then
    echo "❌ API 无响应"
    exit 1
fi

# 检查结果
SUCCESS=$(echo "$RESPONSE" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('success', False))" 2>/dev/null)

if [ "$SUCCESS" = "True" ]; then
    URL=$(echo "$RESPONSE" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('url',''))" 2>/dev/null)
    DIR_NAME=$(echo "$RESPONSE" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('dirName',''))" 2>/dev/null)
    DEPLOY_ID=$(echo "$RESPONSE" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('id',''))" 2>/dev/null)

    echo ""
    echo "✅ 部署成功！"
    echo ""
    echo "🌐 访问地址：$URL"
    echo "📂 目录名：$DIR_NAME"
    echo "🆔 部署ID：$DEPLOY_ID"
    echo "⏱️  部署耗时：${DURATION} 秒"
else
    ERROR=$(echo "$RESPONSE" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('error','unknown'))" 2>/dev/null)
    MSG=$(echo "$RESPONSE" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('message',''))" 2>/dev/null)
    echo "❌ 部署失败: $ERROR - $MSG"
    exit 1
fi
