#!/bin/bash

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

# 仅支持 -h/--help 快速查看
if [[ "${1:-}" =~ ^(-h|--help)$ ]]; then
    echo "用法: $0"
    echo ""
    echo "脚本将提示选择更新方式，默认拉取仓库并更新镜像。"
    exit 0
fi

# 进入脚本所在目录（项目根目录）
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
cd "$SCRIPT_DIR"

# 命令行内选择更新方式（默认：更新并拉取仓库）
echo ""
echo "请选择更新方式："
echo "   [1] 更新并拉取仓库（git pull）+ 更新镜像并重启（默认）"
echo "   [2] 仅更新镜像并重启（跳过 git pull）"
read -r -p "请选择 [1/2，回车默认 1]: " choice
choice="${choice:-1}"
SKIP_REPO_UPDATE=false
case "$choice" in
    2) SKIP_REPO_UPDATE=true ;;
    1) ;;
    *) echo "❌ 无效选择，将使用默认：更新并拉取仓库"; SKIP_REPO_UPDATE=false ;;
esac

# 拉取整个仓库更新
if [ "$SKIP_REPO_UPDATE" = false ]; then
    echo ""
    echo "==========================="
    echo "📥 拉取仓库最新代码"
    echo "==========================="

    if [ ! -d .git ]; then
        echo "❌ 当前目录不是 Git 仓库，无法执行 git pull"
        echo "   请使用 git clone 克隆项目后即可使用 update.sh 更新"
        echo "   克隆命令: git clone https://git.51easyai.com/wangbo/easyai && cd easyai"
        exit 1
    fi

    echo "📥 正在执行 git pull..."
    if git pull; then
        echo "✅ 仓库已更新到最新版本"
    else
        echo "❌ git pull 失败，请检查网络或远程仓库配置"
        exit 1
    fi

    # 确保环境配置文件存在（从 .sample 生成，不覆盖已有文件）
    echo ""
    echo "📝 检查环境配置文件..."
    [ ! -f .env ] && [ -f .env.sample ] && cp .env.sample .env && echo "   ✓ .env"
    [ ! -f .env.tools ] && [ -f .env.tools.sample ] && cp .env.tools.sample .env.tools && echo "   ✓ .env.tools"
    [ ! -f .env.ASG ] && [ -f .env.ASG.sample ] && cp .env.ASG.sample .env.ASG && echo "   ✓ .env.ASG"
    [ ! -f .env.AMS ] && [ -f .env.AMS.sample ] && cp .env.AMS.sample .env.AMS && echo "   ✓ .env.AMS"

    echo ""
else
    echo "⏭️  跳过仓库更新，仅更新镜像并重启"
    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应用更新成功"
