@echo off
setlocal enabledelayedexpansion

set VERSION=1.0.0
set CONFIGURATION=Release
set OUTPUT_DIR=%~dp0\nupkgs
set API_KEY=your-nuget-api-key
set SOURCE=https://api.nuget.org/v3/index.json

REM 创建输出目录
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"

REM 清理
echo 清理解决方案...
dotnet clean JiShe.CollectBus.sln -c %CONFIGURATION%

REM 删除之前的包
echo 删除之前的包...
if exist "%OUTPUT_DIR%\*.nupkg" del /q "%OUTPUT_DIR%\*.nupkg"

REM 打包项目
echo 开始打包项目...

REM 打包 Protocol 项目
echo 打包 Protocol 项目...
call :
 protocols\JiShe.CollectBus.Protocol\JiShe.CollectBus.Protocol.csproj
call :PackProject protocols\JiShe.CollectBus.Protocol.Contracts\JiShe.CollectBus.Protocol.Contracts.csproj
call :PackProject protocols\JiShe.CollectBus.Protocol.T37612012\JiShe.CollectBus.Protocol.T37612012.csproj

REM 打包 Modules 项目
echo 打包 Modules 项目...
call :PackProject modules\JiShe.CollectBus.FreeRedis\JiShe.CollectBus.FreeRedis.csproj
call :PackProject modules\JiShe.CollectBus.Kafka\JiShe.CollectBus.Kafka.csproj
call :PackProject modules\JiShe.CollectBus.IoTDB\JiShe.CollectBus.IoTDB.csproj
call :PackProject modules\JiShe.CollectBus.MongoDB\JiShe.CollectBus.MongoDB.csproj
call :PackProject modules\JiShe.CollectBus.FreeSql\JiShe.CollectBus.FreeSql.csproj
call :PackProject modules\JiShe.CollectBus.Cassandra\JiShe.CollectBus.Cassandra.csproj

REM 打包 Shared 项目
echo 打包 Shared 项目...
call :PackProject shared\JiShe.CollectBus.Common\JiShe.CollectBus.Common.csproj
call :PackProject shared\JiShe.CollectBus.Domain.Shared\JiShe.CollectBus.Domain.Shared.csproj

REM 打包 Services 项目
@REM echo 打包 Services 项目...
@REM call :PackProject services\JiShe.CollectBus.Domain\JiShe.CollectBus.Domain.csproj
@REM call :PackProject services\JiShe.CollectBus.Application.Contracts\JiShe.CollectBus.Application.Contracts.csproj
@REM call :PackProject services\JiShe.CollectBus.Application\JiShe.CollectBus.Application.csproj
@REM call :PackProject services\JiShe.CollectBus.EntityFrameworkCore\JiShe.CollectBus.EntityFrameworkCore.csproj

echo.
echo 是否要发布包到 NuGet? (Y/N)
set /p PUBLISH_CHOICE=

if /i "%PUBLISH_CHOICE%"=="Y" (
    echo 开始发布包...
    for %%f in ("%OUTPUT_DIR%\*.nupkg") do (
        echo 发布: %%f
        dotnet nuget push "%%f" --api-key %API_KEY% --source %SOURCE% --skip-duplicate
    )
    echo 所有包已发布完成!
) else (
    echo 跳过发布操作。所有包都在 %OUTPUT_DIR% 目录中。
)

goto :eof

:PackProject
if exist "%~1" (
    echo 打包: %~1
    dotnet pack "%~1" -c %CONFIGURATION% --include-symbols -p:SymbolPackageFormat=snupkg -p:PackageVersion=%VERSION% -o "%OUTPUT_DIR%"
) else (
    echo 警告: 项目不存在 - %~1
)
goto :eof 