CultLib/scripts/build-geometry-candidate.ps1
2026-07-22 04:08:32 +01:00

31 lines
1.8 KiB
PowerShell

param(
[string] $Version = "0.1.0-geometry-migration.2",
[string] $OutputDirectory = "artifacts\candidate-feed",
[string] $CultMathCandidateFeed = "..\CultMath\.tools\local-feed"
)
$ErrorActionPreference = "Stop"
$root = Split-Path -Parent $PSScriptRoot
$project = Join-Path $root "src\GameCult.Geometry\GameCult.Geometry.csproj"
$output = Join-Path $root $OutputDirectory
$feed = [IO.Path]::GetFullPath((Join-Path $root $CultMathCandidateFeed))
New-Item -ItemType Directory -Force -Path $output | Out-Null
$supportProjects = @(
"src\GameCult.Logging\GameCult.Logging.csproj",
"src\GameCult.Caching\GameCult.Caching.csproj",
"src\GameCult.Caching.MessagePack.Analyzers\GameCult.Caching.MessagePack.Analyzers.csproj",
"src\GameCult.Caching.MessagePack\GameCult.Caching.MessagePack.csproj",
"src\GameCult.Networking\GameCult.Networking.csproj",
"src\GameCult.Mesh\GameCult.Mesh.csproj"
)
foreach ($relativeProject in $supportProjects) {
$supportProject = Join-Path $root $relativeProject
dotnet pack $supportProject -c Release -o $output --disable-build-servers -p:PackageVersion=$Version -p:UseSharedCompilation=false -m:1
if ($LASTEXITCODE -ne 0) { throw "Candidate support pack failed: $relativeProject" }
}
dotnet restore $project --disable-build-servers -p:CultMathCandidateFeed=$feed -p:UseSharedCompilation=false -m:1
if ($LASTEXITCODE -ne 0) { throw "Geometry candidate restore failed." }
dotnet pack $project -c Release -o $output --no-restore --disable-build-servers -p:PackageVersion=$Version -p:CultMathCandidateFeed=$feed -p:UseSharedCompilation=false -m:1
if ($LASTEXITCODE -ne 0) { throw "Geometry candidate pack failed." }
$package = Join-Path $output "GameCult.Geometry.$Version.nupkg"
if (-not (Test-Path -LiteralPath $package)) { throw "Geometry candidate package was not produced." }
Write-Host $package