From 8fd44478e2772efe0023101ba0e761c2a066bd1d Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sun, 2 Aug 2026 13:01:16 +0200 Subject: [PATCH] Treat an empty GitHub release list as a valid starting state A repository that has never released returns '[]' from 'gh release list', which deserializes to nothing and reached the version helpers as $null. Return an array instead and let the helpers bind an empty one. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../src/Resolve-PSModuleVersion.Helpers.psm1 | 7 ++++++- .github/actions/Resolve-PSModuleVersion/src/main.ps1 | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/actions/Resolve-PSModuleVersion/src/Resolve-PSModuleVersion.Helpers.psm1 b/.github/actions/Resolve-PSModuleVersion/src/Resolve-PSModuleVersion.Helpers.psm1 index d4f2f450..77319f70 100644 --- a/.github/actions/Resolve-PSModuleVersion/src/Resolve-PSModuleVersion.Helpers.psm1 +++ b/.github/actions/Resolve-PSModuleVersion/src/Resolve-PSModuleVersion.Helpers.psm1 @@ -298,7 +298,9 @@ function Get-GitHubRelease { Write-Error 'Failed to list releases for the repo.' exit $LASTEXITCODE } - $releases = $releasesJson | ConvertFrom-Json + # A repository that has never released returns '[]', which deserializes to nothing. Wrap the + # result so callers always receive an array, even for a module being bootstrapped. + $releases = @($releasesJson | ConvertFrom-Json) Write-Host '-------------------------------------------------' Write-Host ($releases | Select-Object -Property name, isPrerelease, isLatest, publishedAt | @@ -327,6 +329,7 @@ function Get-LatestGitHubVersion { param( # The GitHub releases array to search. [Parameter(Mandatory)] + [AllowEmptyCollection()] [array] $Releases ) @@ -474,6 +477,7 @@ function Get-NextPrereleaseNumber { # The GitHub releases list. [Parameter(Mandatory)] + [AllowEmptyCollection()] [array] $Releases ) @@ -551,6 +555,7 @@ function Get-NextModuleVersion { # The GitHub releases list, used for incremental prerelease calculation. [Parameter(Mandatory)] + [AllowEmptyCollection()] [array] $Releases ) diff --git a/.github/actions/Resolve-PSModuleVersion/src/main.ps1 b/.github/actions/Resolve-PSModuleVersion/src/main.ps1 index da6d70e6..9d143fba 100644 --- a/.github/actions/Resolve-PSModuleVersion/src/main.ps1 +++ b/.github/actions/Resolve-PSModuleVersion/src/main.ps1 @@ -28,7 +28,7 @@ $decision = if ($null -eq $pullRequest) { Resolve-ReleaseDecision -Configuration $config -PullRequest $pullRequest } -$releases = Get-GitHubRelease +$releases = @(Get-GitHubRelease) $ghVersion = Get-LatestGitHubVersion -Releases $releases $psGalleryVersion = Get-LatestPSGalleryVersion -ModuleName $actionInput.Name $latestVersion = Get-LatestPublishedVersion -GitHubVersion $ghVersion -PSGalleryVersion $psGalleryVersion