Skip to content

Commit c910de9

Browse files
committed
fixing workflow
1 parent 1497633 commit c910de9

1 file changed

Lines changed: 35 additions & 60 deletions

File tree

.github/workflows/publish.yml

Lines changed: 35 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -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) {
@@ -56,8 +53,8 @@ jobs:
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

Comments
 (0)