#!/usr/bin/env bash
# ============================================================
#   XWorker 一键安装脚本 (Linux / macOS)
#   版本: 2.0.4-SNAPSHOT
#   功能: 检测/自动安装 Java 与 Maven -> 下载发行版jar ->
#         交互传入版本选择 -> 运行安装 -> 生成 xworker.sh
# ============================================================
set -e

XWORKER_VERSION="2.0.4-SNAPSHOT"
JAR_URL="https://www.xworker.org/download/xworker-${XWORKER_VERSION}.jar"

echo ""
echo "============================================================"
echo "   XWorker ${XWORKER_VERSION} 一键安装脚本 (Linux/macOS)"
echo "============================================================"
echo ""

# ---------- 1. 检测 / 自动安装 Java ----------
echo "[1/5] 检查 Java ..."
if ! command -v java >/dev/null 2>&1; then
    echo "  未检测到 Java, 尝试自动安装 ..."
    if [ -f /etc/debian_version ]; then
        # Debian / Ubuntu
        sudo apt-get update -y && sudo apt-get install -y default-jdk
    elif [ -f /etc/redhat-release ] || [ -f /etc/centos-release ]; then
        sudo yum install -y java-17-openjdk-devel
    elif [ -f /etc/arch-release ]; then
        sudo pacman -Sy --noconfirm jdk-openjdk
    elif uname | grep -qi "darwin"; then
        # macOS
        if command -v brew >/dev/null 2>&1; then
            brew install openjdk@17
            export PATH="/usr/local/opt/openjdk@17/bin:$PATH"
        else
            echo "  [错误] 请先安装 Homebrew (https://brew.sh) 或手动安装 JDK。"
            exit 1
        fi
    else
        echo "  [错误] 未知系统, 请手动安装 JDK 8+: https://adoptium.net/"
        exit 1
    fi
    if ! command -v java >/dev/null 2>&1; then
        echo "  [错误] Java 安装后未生效, 请重新打开终端再运行本脚本。"
        exit 1
    fi
fi
echo "  Java 已就绪: $(java -version 2>&1 | head -1)"

# ---------- 2. 检测 / 自动安装 Maven ----------
echo "[2/5] 检查 Maven ..."
if ! command -v mvn >/dev/null 2>&1; then
    echo "  未检测到 Maven, 尝试自动安装 (apache-maven 3.x) ..."
    MVN_VER="3.9.6"
    ARCH=$(uname -m)
    case "$ARCH" in
        x86_64|amd64) MVN_ARCH="bin" ;;
        aarch64|arm64) MVN_ARCH="bin" ;;
        *) MVN_ARCH="bin" ;;
    esac
    MVN_TAR="apache-maven-${MVN_VER}-${MVN_ARCH}.tar.gz"
    MVN_DIR="$HOME/apache-maven-${MVN_VER}"
    if [ ! -d "$MVN_DIR" ]; then
        echo "  下载 Maven ${MVN_VER} ..."
        curl -L -o "/tmp/${MVN_TAR}" \
          "https://archive.apache.org/dist/maven/maven-3/${MVN_VER}/binaries/${MVN_TAR}"
        echo "  解压 Maven ..."
        tar -xzf "/tmp/${MVN_TAR}" -C "$HOME"
    fi
    export PATH="$MVN_DIR/bin:$PATH"
    if ! command -v mvn >/dev/null 2>&1; then
        echo "  [错误] Maven 配置失败, 请手动安装 Maven 3。"
        exit 1
    fi
    echo "  已将 Maven 加入当前会话 PATH。若要永久生效, 请将以下行加入 ~/.bashrc:"
    echo "      export PATH=\"$MVN_DIR/bin:\$PATH\""
fi
echo "  Maven 已就绪: $(mvn -version 2>&1 | head -1)"

# ---------- 3. 下载发行版 jar ----------
echo "[3/5] 下载发行版 jar ..."
if [ ! -f "xworker-${XWORKER_VERSION}.jar" ]; then
    echo "  下载 ${JAR_URL} ..."
    curl -L -o "xworker-${XWORKER_VERSION}.jar" "${JAR_URL}"
fi
echo "  jar 已就绪: xworker-${XWORKER_VERSION}.jar"

# ---------- 4. 选择版本并运行安装 ----------
echo "[4/5] 选择要安装的版本:"
echo ""
echo "     1 - Java 11 版 (推荐)"
echo "     2 - Java 17 版"
echo "     3 - Explorer 版 (不建议)"
echo "     4 - Web 版"
echo "     5 - 退出"
echo ""
printf "  请输入版本号 (1-5): "
read -r CHOICE
if [ -z "$CHOICE" ]; then CHOICE="1"; fi
if [ "$CHOICE" = "5" ]; then echo "  已退出。"; exit 0; fi
echo "  运行安装程序（首次构建较慢，请耐心等待）..."
echo "$CHOICE" | java -jar "xworker-${XWORKER_VERSION}.jar"

# ---------- 5. 生成统一启动器 xworker.sh ----------
echo "[5/5] 生成统一启动器 xworker.sh ..."
if [ -f "swt.sh" ]; then
    if [ ! -f "xworker.sh" ]; then
        cp "swt.sh" "xworker.sh"
        chmod +x "xworker.sh"
    fi
    echo "  已就绪: ./xworker.sh"
elif [ -f "swt.cmd" ]; then
    echo "  [提示] 检测到 Windows 脚本 (swt.cmd), 请改用 install-xworker.bat。"
else
    echo "  [提示] 未找到 swt.sh, 可能是选择了 Web 版, 请使用 ./web.sh 启动。"
fi

echo ""
echo "============================================================"
echo "   安装完成!"
echo "   启动方式: ./xworker.sh"
echo "   (若报错或选择Web版, 请查看生成的 web.sh / 上方日志)"
echo "============================================================"
echo ""
