Private/Get-KadenReleasePublishDecision.ps1
|
function Get-KadenReleasePublishDecision { <# .SYNOPSIS Decide whether a release may be published, without writing or publishing. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$Tag, [Parameter(Mandatory = $true)] [bool]$ProvenanceEligible, [string]$ProvenanceFailure, [Parameter(Mandatory = $true)] [bool]$KeyReady, [string]$KeyFailure, [Parameter(Mandatory = $true)] [bool]$VersionAlreadyPublished ) $moduleVersion = $null $recordedTag = $null $failed = $null if ($Tag -match '^v(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$') { $moduleVersion = $Tag.Substring(1) $recordedTag = $Tag } else { $failed = 'KDN-RELEASE-TAG-SEMVER: Tag is not a semver release tag.' } if (-not $failed -and -not $ProvenanceEligible) { $failed = Get-KadenPublishSafeFailure -Candidate $ProvenanceFailure -Fallback 'KDN-RELEASE-PROVENANCE: Publication is not eligible.' } if (-not $failed -and -not $KeyReady) { $failed = Get-KadenPublishSafeFailure -Candidate $KeyFailure -Fallback 'KDN-RELEASE-KEY-ABSENT: The publication key is not in the release secret store.' } if (-not $failed -and $VersionAlreadyPublished) { $failed = 'KDN-RELEASE-VERSION-PUBLISHED: Issue a later version. The published version is not replaced.' } return [pscustomobject]@{ FailedRequirement = $failed ModuleVersion = $moduleVersion Tag = $recordedTag } } |