#!/bin/bash
# 对子 AI 一键安装脚本
# 自动下载、安装、移除隔离属性

set -e

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

APP_NAME="对子 AI"
APP_BUNDLE="对子 AI.app"
DMG_NAME="对子AI-0.1.0-arm64.dmg"
DMG_URL="https://wanxun.site/download/对子AI-0.1.0-arm64.dmg"
DOWNLOAD_DIR="$HOME/Downloads"
APPLICATIONS_DIR="/Applications"
DMG_PATH=""

echo -e "${BLUE}"
echo "╔════════════════════════════════════════════════════════════╗"
echo "║           对子 AI (Binson AI) 一键安装脚本                 ║"
echo "║           一对互相配对的 AI 搭档                            ║"
echo "╚════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
echo ""

# 检测架构
ARCH=$(uname -m)
if [ "$ARCH" = "arm64" ]; then
    echo -e "${GREEN}✓ 检测到 Apple Silicon (M1/M2/M3/M4) 架构${NC}"
    DMG_NAME="对子AI-0.1.0-arm64.dmg"
    DMG_URL="https://wanxun.site/download/对子AI-0.1.0-arm64.dmg"
else
    echo -e "${GREEN}✓ 检测到 Intel 架构${NC}"
    DMG_NAME="对子AI-0.1.0.dmg"
    DMG_URL="https://wanxun.site/download/对子AI-0.1.0.dmg"
fi

# 检查是否已安装
if [ -d "$APPLICATIONS_DIR/$APP_BUNDLE" ]; then
    echo -e "${YELLOW}⚠ 检测到已安装的 $APP_NAME${NC}"
    read -p "是否覆盖安装？(y/N): " -n 1 -r
    echo
    if [[ ! $REPLY =~ ^[Yy]$ ]]; then
        echo -e "${YELLOW}安装已取消${NC}"
        exit 0
    fi
    echo -e "${YELLOW}正在移除旧版本...${NC}"
    rm -rf "$APPLICATIONS_DIR/$APP_BUNDLE"
fi

# 查找 DMG 文件
echo ""
echo -e "${BLUE}🔍 正在查找安装包...${NC}"

# 优先在 Downloads 目录查找
if [ -f "$DOWNLOAD_DIR/$DMG_NAME" ]; then
    DMG_PATH="$DOWNLOAD_DIR/$DMG_NAME"
    echo -e "${GREEN}✓ 在下载目录找到安装包: $DMG_PATH${NC}"
else
    # 搜索整个用户目录
    echo -e "${YELLOW}在下载目录未找到，正在搜索...${NC}"
    DMG_PATH=$(find "$HOME" -name "$DMG_NAME" -type f 2>/dev/null | head -1)
    
    if [ -z "$DMG_PATH" ]; then
        echo -e "${YELLOW}未找到本地安装包，开始自动下载...${NC}"
        echo ""
        echo -e "${BLUE}📥 正在下载 $DMG_NAME...${NC}"
        echo -e "${BLUE}下载地址: $DMG_URL${NC}"
        echo ""
        
        # 使用 curl 下载
        if command -v curl &> /dev/null; then
            curl -L -o "$DOWNLOAD_DIR/$DMG_NAME" "$DMG_URL" --progress-bar
            DMG_PATH="$DOWNLOAD_DIR/$DMG_NAME"
        elif command -v wget &> /dev/null; then
            wget -O "$DOWNLOAD_DIR/$DMG_NAME" "$DMG_URL"
            DMG_PATH="$DOWNLOAD_DIR/$DMG_NAME"
        else
            echo -e "${RED}✗ 未找到 curl 或 wget，无法自动下载${NC}"
            echo -e "${YELLOW}请手动下载: $DMG_URL${NC}"
            echo -e "${YELLOW}下载后重新运行此脚本${NC}"
            exit 1
        fi
        
        if [ ! -f "$DMG_PATH" ]; then
            echo -e "${RED}✗ 下载失败${NC}"
            exit 1
        fi
        echo -e "${GREEN}✓ 下载完成${NC}"
    else
        echo -e "${GREEN}✓ 找到安装包: $DMG_PATH${NC}"
    fi
fi

# 验证 DMG 文件
echo ""
echo -e "${BLUE}🔍 正在验证安装包...${NC}"
if [ ! -s "$DMG_PATH" ]; then
    echo -e "${RED}✗ 安装包文件为空或损坏${NC}"
    exit 1
fi

FILE_SIZE=$(du -h "$DMG_PATH" | cut -f1)
echo -e "${GREEN}✓ 安装包大小: $FILE_SIZE${NC}"

# 挂载 DMG
echo ""
echo -e "${BLUE}📦 正在挂载安装镜像...${NC}"
MOUNT_POINT=$(hdiutil attach "$DMG_PATH" -nobrowse -readonly | grep -E '/Volumes/' | awk '{print $3}' | head -1)

if [ -z "$MOUNT_POINT" ]; then
    echo -e "${RED}✗ 挂载失败${NC}"
    exit 1
fi
echo -e "${GREEN}✓ 已挂载到: $MOUNT_POINT${NC}"

# 查找应用
APP_SOURCE=$(find "$MOUNT_POINT" -name "$APP_BUNDLE" -type d 2>/dev/null | head -1)
if [ -z "$APP_SOURCE" ]; then
    echo -e "${RED}✗ 在镜像中未找到 $APP_BUNDLE${NC}"
    hdiutil detach "$MOUNT_POINT" -quiet
    exit 1
fi
echo -e "${GREEN}✓ 找到应用: $APP_SOURCE${NC}"

# 复制应用
echo ""
echo -e "${BLUE}📋 正在安装到应用程序...${NC}"
cp -R "$APP_SOURCE" "$APPLICATIONS_DIR/"

if [ ! -d "$APPLICATIONS_DIR/$APP_BUNDLE" ]; then
    echo -e "${RED}✗ 复制失败${NC}"
    hdiutil detach "$MOUNT_POINT" -quiet
    exit 1
fi
echo -e "${GREEN}✓ 已安装到: $APPLICATIONS_DIR/$APP_BUNDLE${NC}"

# 移除隔离属性
echo ""
echo -e "${BLUE}🔓 正在移除安全隔离属性...${NC}"
xattr -dr com.apple.quarantine "$APPLICATIONS_DIR/$APP_BUNDLE" 2>/dev/null || true
echo -e "${GREEN}✓ 隔离属性已移除${NC}"

# 卸载 DMG
echo ""
echo -e "${BLUE}📤 正在卸载安装镜像...${NC}"
hdiutil detach "$MOUNT_POINT" -quiet
echo -e "${GREEN}✓ 已卸载${NC}"

# 验证安装
echo ""
echo -e "${BLUE}✅ 验证安装...${NC}"
if [ -d "$APPLICATIONS_DIR/$APP_BUNDLE" ]; then
    APP_SIZE=$(du -sh "$APPLICATIONS_DIR/$APP_BUNDLE" | cut -f1)
    echo -e "${GREEN}✓ 应用大小: $APP_SIZE${NC}"
else
    echo -e "${RED}✗ 安装验证失败${NC}"
    exit 1
fi

# 完成
echo ""
echo -e "${GREEN}"
echo "╔════════════════════════════════════════════════════════════╗"
echo "║                    🎉 安装完成！                           ║"
echo "╚════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
echo ""
echo -e "${BLUE}应用已安装到: ${GREEN}$APPLICATIONS_DIR/$APP_BUNDLE${NC}"
echo ""
echo -e "${YELLOW}启动方式：${NC}"
echo "  1. 在启动台（Launchpad）中找到\"对子 AI\""
echo "  2. 或在应用程序文件夹中双击打开"
echo "  3. 或在终端执行: open -a \"对子 AI\""
echo ""

# 询问是否立即启动
read -p "是否立即启动对子 AI？(Y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]] || [ -z "$REPLY" ]; then
    echo -e "${BLUE}🚀 正在启动对子 AI...${NC}"
    open -a "$APP_NAME"
fi

echo ""
echo -e "${GREEN}感谢使用对子 AI (Binson AI)！${NC}"
echo -e "${BLUE}官网: https://aibinson.com/${NC}"
echo ""

exit 0
