@echo off
chcp 65001 >nul
REM MeshRay Windows GUI 构建脚本 - 无控制台窗口版本

echo ============================================
echo   MeshRay 编译工具 v2.0.0
echo ============================================
echo.

cd /d "%~dp0"

REM 步骤 1: 检查前端资源
echo [1/5] 检查前端资源...
if not exist "web\dist\index.html" (
    echo [!] 前端资源不存在，正在编译...
    cd web
    call npm run build
    if errorlevel 1 (
        echo [ERROR] 前端编译失败!
        exit /b 1
    )
    cd ..
) else (
    echo [+] 前端资源已存在
)

REM 步骤 2: 清理缓存
echo.
echo [2/5] 清理 Go 构建缓存...
go clean -cache
echo [+] 缓存清理完成

REM 步骤 3: 获取版本信息
echo.
echo [3/5] 收集版本信息...
for /f "tokens=*" %%i in ('git rev-parse --short HEAD 2^>nul') do set GIT_COMMIT=%%i
if "%GIT_COMMIT%"=="" set GIT_COMMIT=unknown
set BUILD_TIME=%date% %time%
set VERSION=2.0.0

echo   版本：%VERSION%
echo   Git Commit: %GIT_COMMIT%
echo   编译时间：%BUILD_TIME%

REM 步骤 4: 编译 Windows 程序
echo.
echo [4/5] 编译 Windows 程序 (带服务支持)...
REM 移除了 -s -w -H=windowsgui 过度混淆导致杀毒软件误报的问题
set LDFLAGS=-X main.Version=%VERSION% -X main.BuildTime="%BUILD_TIME%" -X main.GitCommit=%GIT_COMMIT%

go build -o meshray.exe -ldflags "%LDFLAGS%" ./cmd/meshray

if errorlevel 1 (
    echo.
    echo [ERROR] 编译失败!
    exit /b 1
)

REM 步骤 5: 嵌入图标和版本信息
echo.
echo [5/5] 嵌入 Windows 资源 (图标 + 版本信息)...
where go-winres >nul 2>&1
if errorlevel 1 (
    echo [!] go-winres 未安装，跳过资源嵌入
    echo     安装命令: go install github.com/tc-hib/go-winres@latest
) else (
    go-winres patch --in build\winres.json meshray.exe
    if errorlevel 1 (
        echo [WARN] 资源嵌入失败，但程序仍可运行
    ) else (
        echo [+] 图标和版本信息嵌入成功
    )
)

REM 显示结果
echo.
echo ============================================
echo   编译成功!
echo ============================================
echo   输出文件：meshray.exe
for %%I in ("meshray.exe") do echo   文件大小：%%~zI 字节
echo   配置参数：已移除混淆标志，增加对 Windows 服务的原生支持
echo   服务支持命令：
echo     meshray install   - 安装为系统服务
echo     meshray start     - 启动服务
echo     meshray stop      - 停止服务
echo     meshray uninstall - 卸载服务
echo ============================================
echo.
echo 提示：
echo   直接双击 meshray.exe 将在桌面显示图标托盘。
echo   如果想后台挂机免打扰，推荐管理员打开命令行执行: meshray install
echo.
