#!/bin/bash

set -e  # 发生错误时终止脚本执行

# 参数解析
SKIP_COMPOSE_UPDATE=false

# 解析命令行参数
while [[ $# -gt 0 ]]; do
    case $1 in
        --skip-compose-update|-s)
            SKIP_COMPOSE_UPDATE=true
            shift
            ;;
        --help|-h)
            echo "用法: $0 [选项]"
            echo ""
            echo "选项:"
            echo "  -s, --skip-compose-update    跳过 docker-compose.yml 的更新"
            echo "  -h, --help                   显示此帮助信息"
            echo ""
            exit 0
            ;;
        *)
            echo "❌ 未知参数: $1"
            echo "使用 --help 或 -h 查看帮助信息"
            exit 1
            ;;
    esac
done

# 更新 docker-compose.yml 文件
if [ "$SKIP_COMPOSE_UPDATE" = false ]; then
    echo ""
    echo "==========================="
    echo "📄 检查并更新 docker-compose.yml"
    echo "==========================="

    COMPOSE_FILE="docker-compose.yml"
    COMPOSE_URL="https://git.51easyai.com/wangbo/easyai/raw/main/docker-compose.yml"
    TEMP_FILE=$(mktemp)

    # 检查本地文件是否存在
    if [ ! -f "$COMPOSE_FILE" ]; then
        echo "⚠️  本地 $COMPOSE_FILE 不存在，直接下载最新版本..."
        curl -fsSL "$COMPOSE_URL" -o "$COMPOSE_FILE"
        echo "✅ $COMPOSE_FILE 已下载"
    else
        echo "📥 正在下载远程 $COMPOSE_FILE..."
        if curl -fsSL "$COMPOSE_URL" -o "$TEMP_FILE"; then
            # 比较本地文件和远程文件的内容
            if cmp -s "$COMPOSE_FILE" "$TEMP_FILE"; then
                echo "✅ 本地 $COMPOSE_FILE 已是最新版本，无需更新"
                rm -f "$TEMP_FILE"
            else
                echo "🔄 检测到新版本，正在更新..."
                # 备份原文件
                BACKUP_FILE="${COMPOSE_FILE}.bak"
                cp "$COMPOSE_FILE" "$BACKUP_FILE"
                echo "💾 原文件已备份为 $BACKUP_FILE"
                # 替换为新文件
                mv "$TEMP_FILE" "$COMPOSE_FILE"
                echo "✅ $COMPOSE_FILE 已更新到最新版本"
            fi
        else
            echo "❌ 无法下载远程文件，跳过更新步骤"
            rm -f "$TEMP_FILE"
        fi
    fi

    echo ""
else
    echo "⏭️  跳过 docker-compose.yml 更新（已使用 --skip-compose-update 参数）"
    echo ""
fi

echo "==========================="
echo "🚀 开始自动安装 Docker 和 Docker Compose"
echo "==========================="

# 检查 Docker 是否已安装
if command -v docker &> /dev/null; then
    echo "✅ Docker 已安装，跳过安装步骤"
else
    # 原有的 Docker 安装步骤
    echo "📦 安装依赖..."
    sudo apt update -y
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

    echo "🔑 添加 Docker GPG 密钥..."
    curl -fsSL https://mirrors.nwafu.edu.cn生成注释ker-ce/linux/ubuntu/gpg | sudo apt-key add -

    echo "🌍 添加 Docker 源..."
    sudo add-apt-repository -y "deb [arch=amd64] https://mirrors.nwafu.edu.cn生成注释ker-ce/linux/ubuntu/ $(lsb_release -cs) stable"
    sudo apt-get update -y

    echo "🐳 安装 Docker..."
    sudo apt-get install -y docker.io

    echo "✅ 启动并设置 Docker 开机自启..."
    sudo systemctl enable docker
    sudo systemctl start docker
fi

# 检测并使用正确的 Docker Compose 命令
# 优先使用新版本的 docker compose（作为 docker 的子命令）
if docker compose version &> /dev/null; then
    DOCKER_COMPOSE_CMD="docker compose"
    echo "✅ 检测到 Docker Compose (新版本: docker compose)"
elif command -v docker-compose &> /dev/null; then
    DOCKER_COMPOSE_CMD="docker-compose"
    echo "✅ 检测到 Docker Compose (旧版本: docker-compose)"
else
    echo "⚙️ 安装 Docker Compose..."
    sudo mv ./docker-compose-linux-x86_64 /usr/bin/docker-compose
    #设置权限
    chmod +x /usr/bin/docker-compose
    DOCKER_COMPOSE_CMD="docker-compose"
    echo "✅ Docker Compose 安装完成"
fi

echo "📌 Docker 运行状态:"
sudo systemctl status docker --no-pager || true

echo "📌 Docker Compose 版本:"
$DOCKER_COMPOSE_CMD version

echo "🎉 Docker 和 Docker Compose 已就绪！"


echo "🚀 重新启动EasyAI"
sudo $DOCKER_COMPOSE_CMD pull && sudo $DOCKER_COMPOSE_CMD up -d
echo "🎉EasyAI应用更新成功"
