Files
agent-manager/scripts/render-manifests.ps1
T

51 lines
2.4 KiB
PowerShell

# Renders the packaging templates (scoop, winget, homebrew, rpm) with the
# version and the sha256 of every release archive.
# Usage: scripts/render-manifests.ps1 -Version 0.4.2 [-DistDir dist]
param(
[Parameter(Mandatory = $true)][string]$Version,
[string]$DistDir = "dist"
)
$ErrorActionPreference = "Stop"
function Get-Sha([string]$file) {
$p = Join-Path $DistDir $file
if (-not (Test-Path $p)) {
Write-Warning "missing $p - placeholder 0000... (build it or wait for the CI runner)"
return "0000000000000000000000000000000000000000000000000000000000000000"
}
(Get-FileHash $p -Algorithm SHA256).Hash.ToLower()
}
$vars = [ordered]@{
"{{VERSION}}" = $Version
"{{SHA256_WINDOWS}}" = Get-Sha "am-windows-x86_64.zip"
"{{SHA256_LINUX_X86_64}}" = Get-Sha "am-linux-x86_64.tar.gz"
"{{SHA256_LINUX_AARCH64}}" = Get-Sha "am-linux-aarch64.tar.gz"
"{{SHA256_MACOS_X86_64}}" = Get-Sha "am-macos-x86_64.tar.gz"
"{{SHA256_MACOS_AARCH64}}" = Get-Sha "am-macos-aarch64.tar.gz"
}
$targets = @(
@{ Src = "packaging/scoop/am.json"; Dst = "dist/scoop/am.json" },
@{ Src = "packaging/winget/agent-manager.installer.yaml"; Dst = "dist/winget/agent-manager.installer.yaml" },
@{ Src = "packaging/winget/agent-manager.locale.en-US.yaml"; Dst = "dist/winget/agent-manager.locale.en-US.yaml" },
@{ Src = "packaging/winget/agent-manager.yaml"; Dst = "dist/winget/agent-manager.yaml" },
@{ Src = "packaging/homebrew/am.rb"; Dst = "dist/homebrew/am.rb" },
@{ Src = "packaging/rpm/am.spec"; Dst = "dist/rpm/am.spec" }
)
foreach ($t in $targets) {
$text = Get-Content $t.Src -Raw
foreach ($k in $vars.Keys) { $text = $text.Replace($k, $vars[$k]) }
New-Item -ItemType Directory -Force (Split-Path $t.Dst) | Out-Null
Set-Content -Path $t.Dst -Value $text -NoNewline -Encoding utf8
Write-Host "rendered $($t.Dst)"
}
Write-Host ""
Write-Host "Manifests rendus dans dist/. Puis :"
Write-Host " - scoop : scoop install dist/scoop/am.json (ou ajoutez-le a votre bucket)"
Write-Host " - winget : soumettez dist/winget/*.yaml a microsoft/winget-pkgs"
Write-Host " - homebrew : servez dist/homebrew/am.rb via un tap, ou soumettez a homebrew/core"
Write-Host " - rpm : copiez dist/rpm/am.spec + dist/am-linux-x86_64.tar.gz dans ~/rpmbuild/{SPECS,SOURCES} puis rpmbuild -bb"
Write-Host " - deb : packaging/deb/make-deb.sh $Version"