@echo off
rem ============================================================
rem  XWorker 一键安装脚本 (Windows)
rem  版本: 2.0.4-SNAPSHOT
rem  功能: 检查/自动安装 Java 与 Maven -> 下载发行版jar ->
rem        交互传入版本选择 -> 运行安装 -> 生成 xworker.cmd
rem ============================================================
setlocal enabledelayedexpansion
chcp 65001 >nul

set "XWORKER_VERSION=2.0.4-SNAPSHOT"
set "JAR_URL=https://www.xworker.org/download/xworker-%XWORKER_VERSION%.jar"

echo.
echo ============================================================
echo    XWorker %XWORKER_VERSION% 一键安装脚本 (Windows)
echo ============================================================
echo.

rem ---------- 1. 检查 / 安装 Java ----------
echo [1/5] 检查 Java ...
java -version >nul 2>&1
if !errorlevel! neq 0 (
    echo  未检测到 Java，尝试自动安装 Temurin JDK 17 ...
    where winget >nul 2>&1
    if !errorlevel! equ 0 (
        winget install --id EclipseAdoptium.Temurin.17.JDK -e --accept-source-agreements --accept-package-agreements
        rem 刷新 PATH 环境变量
        for /f "tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path 2^>nul') do set "PATH=%%b"
    ) else (
        echo   [错误] 未找到 winget，请手动安装 JDK: https://adoptium.net/
        echo   安装完成后重新运行本脚本。
        pause & exit /b 1
    )
    rem 再次检测
    java -version >nul 2>&1
    if !errorlevel! neq 0 (
        echo   [错误] Java 安装后未生效，请重新打开命令行再运行本脚本。
        pause & exit /b 1
    )
)
echo  Java 已就绪。

rem ---------- 2. 检查 / 安装 Maven ----------
echo [2/5] 检查 Maven ...
mvn -version >nul 2>&1
if !errorlevel! neq 0 (
    echo  未检测到 Maven，尝试下载并配置 apache-maven ...
    set "MVN_VER=3.9.6"
    set "MVN_ZIP=%TEMP%\apache-maven-%MVN_VER%-bin.zip"
    set "MVN_HOME=%USERPROFILE%\apache-maven-%MVN_VER%"
    if not exist "!MVN_HOME!\bin\mvn.cmd" (
        echo  正在下载 Maven %MVN_VER% ...
        powershell -Command "Invoke-WebRequest -Uri 'https://archive.apache.org/dist/maven/maven-3/%MVN_VER%/binaries/apache-maven-%MVN_VER%-bin.zip' -OutFile '%MVN_ZIP%'"
        if !errorlevel! neq 0 (
            echo   [错误] Maven 下载失败，请手动安装 Maven 3。https://maven.apache.org/
            pause & exit /b 1
        )
        echo  正在解压 Maven ...
        powershell -Command "Expand-Archive -Path '%MVN_ZIP%' -DestinationPath '%USERPROFILE%' -Force"
    )
    set "PATH=!MVN_HOME!\bin;!PATH!"
    mvn -version >nul 2>&1
    if !errorlevel! neq 0 (
        echo   [错误] Maven 配置失败，请手动安装 Maven 3。
        pause & exit /b 1
    )
)
echo  Maven 已就绪。

rem ---------- 3. 下载发行版 jar ----------
echo [3/5] 下载发行版 jar ...
if not exist "xworker-%XWORKER_VERSION%.jar" (
    echo  下载 %JAR_URL% ...
    curl -L -o "xworker-%XWORKER_VERSION%.jar" "%JAR_URL%"
    if !errorlevel! neq 0 (
        echo   [错误] jar 下载失败，请检查网络后重试。
        pause & exit /b 1
    )
)
echo  jar 已就绪: xworker-%XWORKER_VERSION%.jar

rem ---------- 4. 选择版本并运行安装 ----------
echo [4/5] 选择要安装的版本:
echo.
echo     1 - Java 11 版 (推荐)
echo     2 - Java 17 版
echo     3 - Explorer 版 (不建议)
echo     4 - Web 版
echo     5 - 退出
echo.
set "CHOICE="
set /p "CHOICE=请输入版本号 (1-5): "
if "%CHOICE%"=="" set "CHOICE=1"
if "%CHOICE%"=="5" ( echo 已退出。 & exit /b 0 )
echo  运行安装程序（首次构建较慢，请耐心等待）...
echo %CHOICE% | java -jar "xworker-%XWORKER_VERSION%.jar"
if !errorlevel! neq 0 (
    echo   [错误] 安装过程中出现错误，请检查上方日志。
    pause & exit /b 1
)

rem ---------- 5. 生成统一启动器 xworker.cmd ----------
echo [5/5] 生成统一启动器 xworker.cmd ...
if exist "swt.cmd" (
    if not exist "xworker.cmd" (
        copy /y "swt.cmd" "xworker.cmd" >nul
    )
    echo  已就绪: xworker.cmd
) else (
    echo  [提示] 未找到 swt.cmd，可能是选择了 Web 版，请使用 web.cmd 启动。
)

echo.
echo ============================================================
echo   安装完成！
echo   启动方式: xworker.cmd
echo   (若报错或选择Web版，请查看生成的 web.cmd / 上方日志)
echo ============================================================
echo.
pause
endlocal
