61 lines
1.7 KiB
PowerShell
61 lines
1.7 KiB
PowerShell
param(
|
|
[string]$Configuration = "Release",
|
|
[string]$Version = "0.2.0",
|
|
[string]$RuntimeIdentifier = "win-x64"
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$repoRoot = Split-Path -Parent $PSScriptRoot
|
|
$publishProfile = "FolderProfile"
|
|
$publishDir = Join-Path $repoRoot "bin\$Configuration\net8.0-windows\$RuntimeIdentifier\publish"
|
|
$artifactsDir = Join-Path $repoRoot "artifacts"
|
|
$zipPath = Join-Path $artifactsDir "omni-notify-v$Version-$RuntimeIdentifier.zip"
|
|
|
|
Set-Location $repoRoot
|
|
|
|
function Invoke-DotNet {
|
|
param([string[]]$Arguments)
|
|
|
|
& dotnet @Arguments
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "dotnet $($Arguments -join ' ') failed with exit code $LASTEXITCODE"
|
|
}
|
|
}
|
|
|
|
Invoke-DotNet @("restore", ".\OmniNotify.csproj")
|
|
Invoke-DotNet @("clean", ".\OmniNotify.csproj", "-c", $Configuration)
|
|
Invoke-DotNet @(
|
|
"publish",
|
|
".\OmniNotify.csproj",
|
|
"-c",
|
|
$Configuration,
|
|
"-r",
|
|
$RuntimeIdentifier,
|
|
"--self-contained",
|
|
"false",
|
|
"-p:PublishProfile=$publishProfile",
|
|
"-p:Version=$Version"
|
|
)
|
|
|
|
$runtimeFiles = @("coreclr.dll", "clrjit.dll", "hostfxr.dll", "hostpolicy.dll")
|
|
$bundledRuntime = Get-ChildItem -Path $publishDir -Recurse -File |
|
|
Where-Object { $runtimeFiles -contains $_.Name }
|
|
|
|
if ($bundledRuntime) {
|
|
$names = ($bundledRuntime | Select-Object -ExpandProperty Name) -join ", "
|
|
throw "Publish output appears to include .NET runtime files: $names"
|
|
}
|
|
|
|
if (!(Test-Path $artifactsDir)) {
|
|
New-Item -ItemType Directory -Path $artifactsDir | Out-Null
|
|
}
|
|
|
|
if (Test-Path $zipPath) {
|
|
Remove-Item $zipPath
|
|
}
|
|
|
|
Compress-Archive -Path (Join-Path $publishDir "*") -DestinationPath $zipPath -CompressionLevel Optimal
|
|
|
|
Write-Host "Created $zipPath"
|