2026-09-20 01:15:52 +02:00
|
|
|
[CmdletBinding(SupportsShouldProcess)]
|
2026-09-15 23:24:11 +02:00
|
|
|
param(
|
2026-09-20 01:15:52 +02:00
|
|
|
[string[]]$Runtime = @('win-x64', 'linux-x64'),
|
|
|
|
|
[string]$Output
|
2026-09-15 23:24:11 +02:00
|
|
|
)
|
|
|
|
|
$ErrorActionPreference = 'Stop'
|
2026-09-20 01:15:52 +02:00
|
|
|
|
|
|
|
|
if ($Runtime.Count -eq 0) { throw 'At least one runtime must be specified.' }
|
|
|
|
|
if ($Output -and $Runtime.Count -ne 1) { throw '-Output can only be used when publishing one runtime.' }
|
|
|
|
|
|
|
|
|
|
foreach ($targetRuntime in $Runtime) {
|
|
|
|
|
$targetOutput = if ($Output) { $Output } else { "$PSScriptRoot/artifacts/server/$targetRuntime" }
|
|
|
|
|
if (-not $PSCmdlet.ShouldProcess($targetOutput, "Publish VoiceCat.Server for $targetRuntime")) { continue }
|
|
|
|
|
|
|
|
|
|
dotnet publish "$PSScriptRoot/src/VoiceCat.Server/VoiceCat.Server.csproj" -c Release -r $targetRuntime --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:PublishTrimmed=false -p:RestoreLockedMode=true "-p:NuGetLockFilePath=packages.publish.$targetRuntime.lock.json" -o $targetOutput
|
|
|
|
|
if ($LASTEXITCODE -ne 0) { throw "Managed server publish failed for $targetRuntime." }
|
|
|
|
|
}
|