@@ -24,29 +24,26 @@ jobs:
2424 if : github.event_name == 'release'
2525 shell : pwsh
2626 run : |
27- $tag = "$env:GITHUB_REF" -replace '^refs/tags/', ''
28- if (-not $tag) { Write-Error 'No tag ref found.'; exit 1 }
29- $tagCore = $tag -replace '^v',''
30- if ($tagCore -notmatch '^([0-9]+\.[0-9]+\.[0-9]+)(?:-([A-Za-z0-9\-]+))?$') {
31- Write-Error "Tag '$tag' has invalid format. Use vX.Y.Z or vX.Y.Z-suffix"; exit 1
27+ $tag = "${env:GITHUB_REF}" -replace '^refs/tags/',''
28+ $tag = $tag -replace '^v',''
29+ if ($tag -notmatch '^([0-9]+\.[0-9]+\.[0-9]+)(?:-([A-Za-z0-9\-]+))?$') {
30+ Write-Error 'Bad tag'; exit 1
3231 }
33- $expectedVersion = $Matches[1]
34- $expectedPrerelease = $Matches[2]
35- $psd1Path = Join-Path $PWD 'PSGraph/PSQuickGraph.psd1'
36- if (-not (Test-Path $psd1Path)) { Write-Error 'PSQuickGraph.psd1 not found.'; exit 1 }
37- $raw = Get-Content $psd1Path -Raw
38- $m = [regex]::Match($raw, '(?m)^\s*Prerelease\s*=\s*''([^'']+)''')
39- $manifestPrerelease = if ($m.Success) { $m.Groups[1].Value } else { $null }
40- $moduleVersion = ($raw | Select-String -Pattern "ModuleVersion\s*=\s*'([^']+)'" -AllMatches).Matches.Groups[1].Value
41- #$prLine = ($raw | Select-String -Pattern "^\s*Prerelease\s*=\s*'([^']+)'" -AllMatches)
42- #$manifestPrerelease = if ($prLine) { $prLine.Matches.Groups[1].Value } else { $null }
32+ $ver = $Matches[1]; $pre = $Matches[2]
33+ $manifest = 'PSGraph/PSQuickGraph.psd1'
34+
35+ $md = Test-ModuleManifest -Path $manifest
36+
37+ $moduleVersion = $md.Version
38+ $manifestPrerelease = $md.PrivateData.PSData.Prerelease
39+
4340 $ok = $true
44- if ($moduleVersion -ne $expectedVersion ) {
45- Write-Host "::error::Manifest ModuleVersion ($moduleVersion) does not match tag version ($expectedVersion )."; $ok = $false
41+ if ($moduleVersion -ne $ver ) {
42+ Write-Host "::error::Manifest ModuleVersion ($moduleVersion) does not match tag version ($ver )."; $ok = $false
4643 }
47- if ($expectedPrerelease ) {
48- if ($manifestPrerelease -ne $expectedPrerelease ) {
49- Write-Host "::error::Manifest Prerelease ('$manifestPrerelease') does not match tag prerelease ('$expectedPrerelease ')."; $ok = $false
44+ if ($pre ) {
45+ if ($manifestPrerelease -ne $pre ) {
46+ Write-Host "::error::Manifest Prerelease ('$manifestPrerelease') does not match tag prerelease ('$pre ')."; $ok = $false
5047 }
5148 } else {
5249 if ($manifestPrerelease) {
5653 if (-not $ok) {
5754 Write-Host '--- Manual Action Required ---'
5855 Write-Host 'Update PSGraph/PSQuickGraph.psd1 with:'
59- Write-Host " ModuleVersion = '$expectedVersion '"
60- if ($expectedPrerelease ) { Write-Host " Prerelease = '$expectedPrerelease '" } else { Write-Host ' (Remove/Comment any Prerelease entry)' }
56+ Write-Host " ModuleVersion = '$ver '"
57+ if ($pre ) { Write-Host " Prerelease = '$pre '" } else { Write-Host ' (Remove/Comment any Prerelease entry)' }
6158 Write-Host 'Commit the change and recreate the release (or re-run after fixing).'
6259 exit 1
6360 } else {
@@ -88,47 +85,25 @@ jobs:
8885 id : set_version
8986 shell : pwsh
9087 run : |
91- $tag = "${env:GITHUB_REF}" -replace '^refs/tags/', ''
92- if (-not $tag) {
93- Write-Error "Tag not found. Failing."
94- exit 1
95- }
96- $tag = $tag -replace '^v', ''
97- if ($tag -match '^([0-9]+\.[0-9]+\.[0-9]+)(?:-([A-Za-z0-9\-]+))?$') {
98- $version = $matches[1]
99- $prerelease = $matches[2]
100- } else {
101- Write-Error "Tag format invalid. Should be X.Y.Z or X.Y.Z-suffix"
102- exit 1
103- }
104- if ($prerelease -and ($prerelease -notmatch '^(?:-)?[a-zA-Z0-9\-]+$')) {
105- Write-Error "Prerelease string '$prerelease' contains invalid characters. Only a-z, A-Z, 0-9, and hyphen (-) at the beginning are allowed."
106- exit 1
88+ $tag = "${env:GITHUB_REF}" -replace '^refs/tags/',''
89+ $tag = $tag -replace '^v',''
90+ if ($tag -notmatch '^([0-9]+\.[0-9]+\.[0-9]+)(?:-([A-Za-z0-9\-]+))?$') {
91+ Write-Error 'Bad tag'; exit 1
10792 }
108- $psd1 = Get-Item ./PSGraph/PSQuickGraph.psd1
109- if (-not $psd1) {
110- Write-Error "Module manifest (.psd1) not found!"
111- exit 1
112- }
113- $content = Get-Content $psd1.FullName
114- $versionPattern = 'ModuleVersion\s*=\s*''[^'']*'''
115- $content = $content -replace $versionPattern, "ModuleVersion = '$version'"
116- if ($prerelease) {
117- # Replace commented or uncommented prerelease line with active one
118- $content = $content -replace '^\s*#?\s*Prerelease\s*=\s*''[^'']*''', "Prerelease = '$prerelease'"
119- if ($content -notmatch '^\s*Prerelease\s*=') {
120- # Append if missing entirely
121- $content += "`nPrerelease = '$prerelease'"
122- }
93+ $ver = $Matches[1]; $pre = $Matches[2]
94+ $manifest = 'PSGraph/PSQuickGraph.psd1'
95+
96+ $md = Test-ModuleManifest -Path $manifest
97+
98+
99+ if ($pre) {
100+ Update-ModuleManifest -Path $manifest -ModuleVersion $ver -Prerelease $pre
123101 } else {
124- # Stable release: ensure any existing prerelease line is commented out
125- if ($content -match '^\s*#?\s*Prerelease\s*=\s*''[^'']*''') {
126- $content = $content -replace '^\s*#?\s*Prerelease\s*=\s*''[^'']*''', "# Prerelease = ''"
127- }
102+ Update-ModuleManifest -Path $manifest -ModuleVersion $ver -Prerelease ''
128103 }
129- Set-Content -Path $psd1.FullName -Value $content
130- "version=$version " | Out-File -FilePath $env:GITHUB_OUTPUT -Append
131- "prerelease=$prerelease " | Out-File -FilePath $env:GITHUB_OUTPUT -Append
104+
105+ "version=$ver " | Out-File -FilePath $env:GITHUB_OUTPUT -Append
106+ "prerelease=$pre " | Out-File -FilePath $env:GITHUB_OUTPUT -Append
132107
133108 # --- PowerShell Module Build/Test/Publish ---
134109 - name : Install dependencies
0 commit comments