@echo off
chcp 65001 >nul 2>&1
REM Darra EtherCAT Rust SDK 发布脚本 (Windows)
REM 用法: publish.bat [--dry-run]

setlocal enabledelayedexpansion
cd /d "%~dp0"

echo === Darra EtherCAT Rust SDK 发布工具 ===

REM 检查 cargo
where cargo >nul 2>&1
if errorlevel 1 (
    echo 错误: 未找到 cargo, 请先安装 Rust 工具链
    exit /b 1
)

REM 读取版本号
for /f "tokens=3 delims= " %%v in ('findstr /b "version" Cargo.toml') do (
    set VERSION=%%~v
    goto :got_version
)
:got_version
echo 当前版本: %VERSION%

REM 检查 README
if not exist "README.md" (
    echo 警告: README.md 不存在, 建议创建后再发布
)

REM 格式检查
echo [1/4] 代码格式检查...
cargo fmt --check 2>nul
if errorlevel 1 echo 警告: cargo fmt 检查未通过, 建议运行 cargo fmt

REM 编译检查
echo [2/4] 编译检查...
cargo check --all-features
if errorlevel 1 (
    echo 错误: 编译失败, 中止发布
    exit /b 1
)

REM Clippy 检查
echo [3/4] Clippy 检查...
cargo clippy --all-features -- -D warnings 2>nul
if errorlevel 1 echo 警告: clippy 检查未通过

REM 打包并发布
echo [4/4] 打包发布...
if "%1"=="--dry-run" (
    echo 试运行模式, 不会实际发布
    cargo publish --dry-run --allow-dirty
) else (
    set /p confirm="确认发布 v%VERSION% 到 crates.io? (y/N): "
    if /i "!confirm!"=="y" (
        cargo publish
        echo 发布成功! darra-ethercat v%VERSION%
    ) else (
        echo 已取消发布
    )
)

endlocal
