Skip to content

Commit a7332bd

Browse files
fix: add Test-ModuleManifest validation and prerelease regex guard
Address unresolved review feedback: - Call Test-ModuleManifest for full manifest validation before reading data. - Validate prerelease label against SemVer identifier pattern (alphanumerics, hyphens, dot separators) with a clear error on mismatch.
1 parent a3a69a1 commit a7332bd

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

src/publish.ps1

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ LogGroup 'Resolve version from manifest' {
7878

7979
Show-FileContent -Path $manifestFilePath
8080

81+
$manifest = Test-ModuleManifest -Path $manifestFilePath -ErrorAction Stop
82+
Write-Host "Manifest validated: [$($manifest.Name)] v[$($manifest.Version)]"
83+
8184
$manifestData = Import-PowerShellDataFile -Path $manifestFilePath
8285
$moduleVersion = $manifestData.ModuleVersion
8386
if (-not ($moduleVersion -match '^\d+\.\d+\.\d+$')) {
@@ -90,6 +93,11 @@ LogGroup 'Resolve version from manifest' {
9093
$prerelease = ''
9194
$createPrerelease = $false
9295
} else {
96+
if ($prerelease -notmatch '^[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*$') {
97+
Write-Error ("Prerelease label [$prerelease] is not a valid SemVer prerelease identifier. " +
98+
'It must contain only alphanumerics, hyphens, and dots as separators.')
99+
exit 1
100+
}
93101
$createPrerelease = $true
94102
}
95103

0 commit comments

Comments
 (0)