cli/script/gen-winres.ps1
Babak K. Shandiz 9c54fb3e0d
chore: improve error message when versioninfo.json is not found
Co-authored-by: Andy Feller <andyfeller@github.com>
2025-06-24 22:19:37 +01:00

70 lines
2 KiB
PowerShell
Executable file

#!/usr/bin/env pwsh
$_usage = @"
Generate Windows resource files as ``.syso``
Usage:
gen-winres.ps1 <file-version> <product-version> <path-to-versioninfo.json> <output-path>
Arguments:
<file-version> string to set as file version (e.g. "1.0.0")
<product-version> string to set as product version (e.g. "1.0.0")
<path-to-versioninfo.json> path to the ``versioninfo.json`` file containing static metadata
<output-path> directory where the generated ``.syso`` files should be placed
The created ``.syso`` files are named as ``resource_windows_<arch>.syso``. This
helps Go compiler to pick the correct file based on the target platform and
architecture.
"@
$ErrorActionPreference = "Stop"
$_file_version = $args[0]
if ([string]::IsNullOrEmpty($_file_version)) {
Write-Host "error: file-version argument is missing"
Write-Host $_usage
exit 1
}
$_product_version = $args[1]
if ([string]::IsNullOrEmpty($_product_version)) {
Write-Host "error: product-version argument is missing"
Write-Host $_usage
exit 1
}
$_versioninfo_path = $args[2]
if ([string]::IsNullOrEmpty($_versioninfo_path)) {
Write-Host "error: path to versioninfo.json is missing"
Write-Host $_usage
exit 1
}
if (-not (Test-Path $_versioninfo_path)) {
Write-Host "error: path to versioninfo.json '$_versioninfo_path' is not a file"
Write-Host $_usage
exit 1
}
$_output = $args[3]
if ([string]::IsNullOrEmpty($_output)) {
Write-Host "error: output path is missing"
Write-Host $_usage
exit 1
}
if (-not (Test-Path $_output -PathType Container)) {
Write-Host "error: output path '$_output' is not a directory"
Write-Host $_usage
exit 1
}
go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@v1.5.0
goversioninfo `
-64 -arm -platform-specific `
-file-version "$_file_version" `
-product-version "$_product_version" `
"$_versioninfo_path"
Move-Item -Path "resource_windows_*.syso" -Destination "$_output" -Force