Skip to content

Commit eb3eb0c

Browse files
Require explicit published release status before publication writes
Reject missing or malformed draft metadata and retain valid published controls. The branch-specific Release WhatIf fixture handback adds only two boolean fields and changes no assertions.
1 parent bf242f2 commit eb3eb0c

4 files changed

Lines changed: 8 additions & 2 deletions

File tree

‎.github/actions/Publish-PSModule/README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ Provenance must contain one original JSON object with scalar proof fields; array
1212

1313
GitHub resource responses must have valid object/scalar shapes, while verified empty tag collections remain valid absence. An existing PR-produced stable or prerelease release requires its producing-context footer; unreadable terminal markers are errors even when indented or inline. Unknown legacy PR release context is not inferred from a matching tag.
1414

15+
Existing releases must explicitly return scalar boolean `draft: false`. Missing, null, string, or array status is unknown published-release proof and stops before Gallery publication or a resumed asset upload.
16+
1517
## Inputs
1618

1719
| Name | Description | Required | Default |

‎.github/actions/Publish-PSModule/src/Publish-PSModule.Helpers.psm1‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -506,8 +506,8 @@ function Get-PSModulePublicationState {
506506
}
507507
}
508508
if ($null -ne $release) {
509-
if ($release.draft -eq $true) {
510-
throw 'The existing release is a draft. Refusing Gallery publication or a success-shaped incomplete release.'
509+
if ($release.draft -isnot [bool] -or $release.draft -ne $false) {
510+
throw 'The existing release has no verified boolean draft:false status. Refusing publication or an incomplete release.'
511511
}
512512
if ($release.tag_name -cne $expected.ReleaseTag -or
513513
[string]::IsNullOrWhiteSpace($release.html_url) -or

‎.github/actions/Publish-PSModule/tests/Publish-PSModule.Preflight.Tests.ps1‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ Describe 'Publish-PSModule source-bound preflight' {
155155
tag_name = 'v1.2.4'
156156
html_url = 'https://github.com/PSModule/TestModule/releases/tag/v1.2.4'
157157
prerelease = $false
158+
draft = $false
158159
assets = @($asset)
159160
}
160161

@@ -511,6 +512,7 @@ Describe 'Publish-PSModule source-bound preflight' {
511512
tag_name = 'v1.2.4'
512513
html_url = 'https://github.com/PSModule/TestModule/releases/tag/v1.2.4'
513514
prerelease = $false
515+
draft = $false
514516
body = "Notes.`n<!-- PSModule.PrereleaseOwner:v1:$encoded -->"
515517
assets = @()
516518
}

‎.github/actions/Release-PSModule/tests/Release-PSModule.WhatIf.Tests.ps1‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ Describe 'Release-PSModule WhatIf' {
132132
tag_name = 'v1.2.3-preview.1'
133133
html_url = 'https://github.com/PSModule/TestModule/releases/tag/v1.2.3-preview.1'
134134
prerelease = $true
135+
draft = $false
135136
body = "Original notes.`n<!-- PSModule.PrereleaseOwner:v1:$encoded -->"
136137
assets = @()
137138
}
@@ -213,6 +214,7 @@ Describe 'Release-PSModule WhatIf' {
213214
tag_name = 'v1.2.3-preview.1'
214215
html_url = 'https://github.com/PSModule/TestModule/releases/tag/v1.2.3-preview.1'
215216
prerelease = $true
217+
draft = $false
216218
body = "Foreign PR notes.`n<!-- PSModule.PrereleaseOwner:v1:$encoded -->"
217219
assets = @()
218220
}

0 commit comments

Comments
 (0)