51 lines
2.4 KiB
PowerShell
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.1 [-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"
|