#!/bin/bash
# MeshRay 跨平台构建脚本（go-winres）
# ============================================

echo ""
echo "========================================"
echo "  MeshRay 构建工具"
echo "  版本：2.0.0"
echo "========================================"
echo ""

# 检测操作系统
OS=$(uname -s)
echo "[信息] 检测到操作系统：$OS"

case "$OS" in
    MINGW*|MSYS*|CYGWIN*)
        echo "[信息] Windows 环境，需要 go-winres 工具"
        RSRC_NEEDED=true
        ;;
    Darwin)
        echo "[信息] macOS 环境"
        RSRC_NEEDED=false
        ;;
    Linux)
        echo "[信息] Linux 环境"
        RSRC_NEEDED=false
        ;;
    *)
        echo "[错误] 不支持的操作系统：$OS"
        exit 1
        ;;
esac

# 1. 检查 go-winres（仅 Windows 需要）
if [ "$RSRC_NEEDED" = true ]; then
    echo "[1/7] 检查 go-winres 工具..."
    if ! command -v go-winres &> /dev/null; then
        echo "[警告] go-winres 未安装，正在安装..."
        go install github.com/tc-hib/go-winres@latest || {
            echo "[错误] go-winres 安装失败！"
            exit 1
        }
    fi
    echo "[✓] go-winres 已安装
    
    # 2. 检查配置文件
    echo "[2/7] 检查资源配置..."
    if [ ! -f "build/winres.json" ]; then
        echo "[错误] 配置文件不存在：build/winres.json"
        exit 1
    fi
    echo "[✓] 配置文件已检查"
else
    echo "[1/3] 跳过 Windows 资源文件生成（非 Windows 平台）"
fi

# 3. 生成资源文件（仅 Windows）
if [ "$RSRC_NEEDED" = true ]; then
    echo "[3/7] 生成 Windows 资源文件..."
    go-winres make --in build/winres.json --arch amd64 || {
        echo "[错误] 资源文件生成失败！"
        exit 1
    }
    echo "[✓] 资源文件生成成功"
    
    # 4. 复制 syso到 cmd/meshray 目录（仅 Windows）
    echo "[4/7] 复制资源文件到正确位置..."
    cp rsrc_windows_amd64.syso cmd/meshray/meshray.syso || {
        echo "[错误] 复制失败！"
        exit 1
    }
    echo "[✓] 资源文件已放置"
fi

# 5. 编译程序（所有平台）
echo "[$([ "$RSRC_NEEDED" = true ] && echo '5' || echo '3')/$( [ "$RSRC_NEEDED" = true ] && echo '7' || echo '3' )] 编译 MeshRay..."
if [ "$RSRC_NEEDED" = true ]; then
    # Windows 平台：隐藏控制台窗口
    go build -ldflags="-s -w -H windowsgui" -o meshray ./cmd/meshray
else
    # macOS/Linux: 保持控制台
    go build -ldflags="-s -w" -o meshray ./cmd/meshray
fi
if [ $? -ne 0 ]; then
    echo "[错误] 编译失败！"
    if [ "$RSRC_NEEDED" = true ]; then
        rm -f rsrc_*.syso
        rm -f cmd/meshray/meshray.syso
    fi
    exit 1
fi
echo "[✓] 编译成功"

# 6. 清理临时文件（仅 Windows）
if [ "$RSRC_NEEDED" = true ]; then
    echo "[6/7] 清理临时文件..."
    rm -f rsrc_*.syso
    rm -f cmd/meshray/meshray.syso
    echo "[✓] 清理完成"
fi

# 7. 验证文件（仅 Windows）
if [ "$RSRC_NEEDED" = true ]; then
    echo "[7/7] 验证可执行文件..."
    if [ -f "meshray.exe" ]; then
        echo "[✓] 验证通过"
    else
        echo "[错误] 可执行文件未生成！"
        exit 1
    fi
else
    echo "[3/3] 验证可执行文件..."
    if [ -f "meshray" ] || [ -f "meshray.exe" ]; then
        if [ "$OS" = "Darwin" ] || [ "$OS" = "Linux" ]; then
            chmod +x meshray
        fi
        
        FILE_SIZE=$(ls -lh meshray* | awk '{print $5}')
        echo "[✓] 文件大小：$FILE_SIZE"
        echo "[✓] 验证通过"
    else
        echo "[错误] 可执行文件未生成！"
        exit 1
    fi
fi

echo ""
echo "========================================"
echo "  构建完成！"
echo ""
echo "  输出文件：meshray$([ "$RSRC_NEEDED" = true ] && echo '.exe')"
echo "  版本信息：2.0.0.0"
if [ "$RSRC_NEEDED" = true ]; then
    echo "  包含：图标 + Manifest + 版本信息"
fi
echo "========================================"
echo ""

# 显示版本信息（仅 Windows）
if [ "$RSRC_NEEDED" = true ]; then
    echo "查看版本信息:"
    powershell -Command "(Get-Item meshray.exe).VersionInfo.FileDescription"
    echo ""
fi

echo "按任意键退出..."
read -n 1
