apc-p15-tool/build_release.ps1
2025-06-19 22:21:48 -04:00

54 lines
1.5 KiB
PowerShell

# base build path, relative to script
$outRelativeDir = "\_out"
###
# Script dir is root
$scriptDir = Get-Location
$outBaseDir = Join-Path -Path $scriptDir -ChildPath $outRelativeDir
$outReleaseDir = Join-Path -Path $outBaseDir -ChildPath "\_release"
# ensure release path exists
New-Item -ItemType Directory -Force -Path $outReleaseDir | Out-Null
# get version number (tag)
$gitTag = $(git describe --tags --abbrev=0)
# GOOS_GOARCH to build for
$targets = @(
"windows_amd64",
"linux_amd64",
"linux_arm64",
"darwin_amd64",
"darwin_arm64"
)
# loop through and build all targets
foreach ($target in $targets) {
# environment vars
$split = $target.split("_")
$env:GOOS = $split[0]
$env:GOARCH = $split[1]
$env:CGO_ENABLED = 0
# send build product to GOOS_GOARCH subfolders
$targetOutDir = Join-Path -Path $outBaseDir -ChildPath "$($env:GOOS)_$($env:GOARCH)"
# special case to add file extensions
$extension = ""
if ($env:GOOS -eq "windows") {
$extension = ".exe"
}
# build binary and install only binary
go build -o "$($targetOutDir)\apc-p15-tool$($extension)" .\cmd\tool
go build -o "$($targetOutDir)\apc-p15-install$($extension)" .\cmd\install_only
# copy other important files for release
Copy-Item .\README.md $targetOutDir
Copy-Item .\CHANGELOG.md $targetOutDir
Copy-Item .\LICENSE.md $targetOutDir
# zip and drop into release folder
Compress-Archive -Path "$($targetOutDir)\*" -CompressionLevel Optimal -DestinationPath "$($outReleaseDir)\apc-p15-tool-$($gitTag)_$($target).zip" -Force
}