#!/bin/bash

# 编译脚本 - 打包成服务端可执行文件

echo "开始编译 Go 项目..."

# 设置编译参数
APP_NAME="software-download-center"
VERSION=$(date +%Y%m%d_%H%M%S)
BUILD_DIR="build"
OUTPUT_DIR="${BUILD_DIR}/output"

# 创建输出目录
mkdir -p ${OUTPUT_DIR}

# 编译不同平台的可执行文件
echo "编译 Windows 版本..."
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o ${OUTPUT_DIR}/${APP_NAME}_windows_amd64.exe .

echo "编译 Linux 版本..."
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ${OUTPUT_DIR}/${APP_NAME}_linux_amd64 .

echo "编译 macOS 版本..."
GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o ${OUTPUT_DIR}/${APP_NAME}_darwin_amd64 .
GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o ${OUTPUT_DIR}/${APP_NAME}_darwin_arm64 .

# 复制必要文件
echo "复制必要文件..."
cp -r public ${OUTPUT_DIR}/ 2>/dev/null || true
cp -r views ${OUTPUT_DIR}/ 2>/dev/null || true
cp README.md ${OUTPUT_DIR}/ 2>/dev/null || true
cp ADMIN.md ${OUTPUT_DIR}/ 2>/dev/null || true

# 创建启动脚本
cat > ${OUTPUT_DIR}/start.sh << 'EOF'
#!/bin/bash
# Linux/macOS 启动脚本

PORT=${PORT:-3355}
echo "启动服务器，端口: $PORT"
export PORT=$PORT
./software-download-center_linux_amd64
EOF

cat > ${OUTPUT_DIR}/start.bat << 'EOF'
@echo off
REM Windows 启动脚本

set PORT=3355
if not "%PORT%"=="" set PORT=%PORT%
echo 启动服务器，端口: %PORT%
set PORT=%PORT%
software-download-center_windows_amd64.exe
EOF

chmod +x ${OUTPUT_DIR}/start.sh
chmod +x ${OUTPUT_DIR}/*.exe 2>/dev/null || true

echo ""
echo "编译完成！"
echo "输出目录: ${OUTPUT_DIR}"
echo ""
echo "可执行文件列表:"
ls -lh ${OUTPUT_DIR}/*.exe ${OUTPUT_DIR}/*_linux_amd64 ${OUTPUT_DIR}/*_darwin_* 2>/dev/null | awk '{print $9, "(" $5 ")"}'
echo ""
echo "使用方法:"
echo "  Windows: 运行 start.bat 或直接运行 .exe 文件"
echo "  Linux:   运行 ./start.sh 或直接运行可执行文件"
echo "  macOS:   运行 ./start.sh 或直接运行可执行文件"
