#!/bin/bash

# 创建包含安装脚本的 DMG
# 此脚本会创建一个包含 BearVPN.app 和安装脚本的 DMG

set -e

# 配置变量
APP_NAME="BearVPN"
APP_VERSION="1.0.0"
DMG_NAME="${APP_NAME}-${APP_VERSION}-macOS-Signed"
APP_PATH="build/macos/Build/Products/Release/${APP_NAME}.app"
DMG_PATH="build/macos/Build/Products/Release/${DMG_NAME}.dmg"
TEMP_DIR="/tmp/BearVPN_DMG"

# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 日志函数
log_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

log_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

log_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 清理临时目录
cleanup_temp() {
    log_info "清理临时目录..."
    rm -rf "$TEMP_DIR"
    mkdir -p "$TEMP_DIR"
}

# 准备 DMG 内容
prepare_dmg_content() {
    log_info "准备 DMG 内容..."
    
    # 复制应用
    cp -R "$APP_PATH" "$TEMP_DIR/"
    
    # 复制安装脚本
    cp "install_bearvpn.sh" "$TEMP_DIR/"
    chmod +x "$TEMP_DIR/install_bearvpn.sh"
    
    # 创建 README 文件
    cat > "$TEMP_DIR/README.txt" << 'EOF'
🐻 BearVPN 安装说明
==================

欢迎使用 BearVPN！

📱 安装方法：
1. 双击 "BearVPN.app" 直接安装
2. 或运行 "install_bearvpn.sh" 脚本进行自动安装

⚠️  如果应用无法打开：
1. 右键点击 BearVPN.app → "打开"
2. 在系统偏好设置 → 安全性与隐私 → 允许从以下位置下载的应用 → 选择 "任何来源"
3. 或运行：sudo spctl --master-disable

🔧 技术支持：
如有问题，请联系技术支持团队

感谢使用 BearVPN！
EOF

    # 创建 Applications 链接
    ln -s /Applications "$TEMP_DIR/Applications"
    
    log_success "DMG 内容准备完成"
}

# 创建 DMG
create_dmg() {
    log_info "开始创建 DMG..."
    
    # 删除旧的 DMG
    rm -f "$DMG_PATH"
    
    # 使用 create-dmg 创建 DMG
    create-dmg \
        --volname "$APP_NAME" \
        --volicon "macos/Runner/Assets.xcassets/AppIcon.appiconset/icon-256@2x.png" \
        --window-pos 200 120 \
        --window-size 700 500 \
        --icon-size 100 \
        --icon "$APP_NAME.app" 100 200 \
        --icon "install_bearvpn.sh" 300 200 \
        --icon "README.txt" 500 200 \
        --icon "Applications" 100 350 \
        --hide-extension "$APP_NAME.app" \
        --no-internet-enable \
        "$DMG_PATH" \
        "$TEMP_DIR"
    
    if [ $? -eq 0 ]; then
        log_success "DMG 文件创建成功: $DMG_PATH"
    else
        log_error "DMG 文件创建失败"
        exit 1
    fi
}

# 签名 DMG
sign_dmg() {
    log_info "开始签名 DMG 文件..."
    
    DEVELOPER_ID="Developer ID Application: Your Company Name (XXXXXXXXXX)"
    
    # 签名 DMG
    codesign --force --sign "$DEVELOPER_ID" "$DMG_PATH"
    
    if [ $? -eq 0 ]; then
        log_success "DMG 签名成功"
    else
        log_error "DMG 签名失败"
        exit 1
    fi
    
    # 验证 DMG 签名
    log_info "验证 DMG 签名..."
    codesign --verify --verbose "$DMG_PATH"
    
    if [ $? -eq 0 ]; then
        log_success "DMG 签名验证通过"
    else
        log_error "DMG 签名验证失败"
        exit 1
    fi
}

# 显示结果
show_result() {
    log_success "=========================================="
    log_success "包含安装脚本的 DMG 创建完成！"
    log_success "=========================================="
    log_info "DMG 路径: $DMG_PATH"
    log_info "DMG 大小: $(du -h "$DMG_PATH" | cut -f1)"
    log_info "包含内容:"
    log_info "  - BearVPN.app (应用)"
    log_info "  - install_bearvpn.sh (安装脚本)"
    log_info "  - README.txt (说明文档)"
    log_info "  - Applications (快捷方式)"
    log_success "=========================================="
    log_info "用户可以通过以下方式安装："
    log_info "1. 直接拖拽 BearVPN.app 到 Applications"
    log_info "2. 运行 install_bearvpn.sh 脚本"
    log_success "=========================================="
}

# 主函数
main() {
    log_info "开始创建包含安装脚本的 DMG..."
    log_info "=========================================="
    
    cleanup_temp
    prepare_dmg_content
    create_dmg
    sign_dmg
    show_result
    
    log_success "所有操作完成！"
}

# 运行主函数
main "$@"
