Skip to content

Commit acdc593

Browse files
Merge pull request #3292 from PowerShell/andschwa/version-tool
Add `Update-Version` to `ReleaseTools` module
2 parents 17a48e7 + 818ad2f commit acdc593

File tree

2 files changed

+94
-247
lines changed

2 files changed

+94
-247
lines changed

tools/ReleaseTools.psm1

Lines changed: 94 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,13 @@ function Update-Changelog {
162162
$Release = $Repo | Get-GitHubRelease -Latest
163163
$Commits = git rev-list "$($Release.tag_name)..."
164164

165-
# NOTE: This is a slow API as it gets all closed PRs, and then filters.
166-
$Bullets = $Repo | Get-GitHubPullRequest -State Closed |
165+
# NOTE: This is a slow API as it gets all PRs, and then filters.
166+
$Bullets = $Repo | Get-GitHubPullRequest -State All |
167167
Where-Object { $_.merge_commit_sha -in $Commits } |
168168
Where-Object { -not $_.user.UserName.EndsWith("[bot]") } |
169169
Where-Object { -not $_.title.StartsWith("[Ignore]") } |
170+
Where-Object { -not $_.title.StartsWith("Update CHANGELOG") } |
171+
Where-Object { -not $_.title.StartsWith("Bump version") } |
170172
Get-Bullets -RepositoryName $RepositoryName
171173

172174
$NewSection = switch ($RepositoryName) {
@@ -206,6 +208,95 @@ function Update-Changelog {
206208
Pop-Location
207209
}
208210

211+
<#
212+
.SYNOPSIS
213+
Updates version in repository.
214+
.DESCRIPTION
215+
Note that our Git tags and changelog prefix all versions with `v`.
216+
217+
PowerShellEditorServices: version is `x.y.z-preview.d`
218+
219+
- PowerShellEditorServices.psd1:
220+
- `ModuleVersion` variable with `'x.y.z'` string, no pre-release info
221+
- PowerShellEditorServices.Common.props:
222+
- `VersionPrefix` field with `x.y.z`
223+
- `VersionSuffix` field with pre-release portion excluding hyphen
224+
225+
vscode-powershell: version is `yyyy.mm.x-preview`
226+
227+
- package.json:
228+
- `version` field with `"x.y.z"` and no prefix or suffix
229+
- `preview` field set to `true` or `false` if version is a preview
230+
- `name` field has `-preview` appended similarly
231+
- `displayName` field has ` Preview` appended similarly
232+
- `description` field has `(Preview) ` prepended similarly
233+
#>
234+
function Update-Version {
235+
[CmdletBinding(SupportsShouldProcess)]
236+
param(
237+
[Parameter(Mandatory)]
238+
[ValidateSet([RepoNames])]
239+
[string]$RepositoryName
240+
)
241+
# NOTE: This a side effect neccesary for Git operations to work.
242+
Push-Location -Path "$PSScriptRoot/../../$RepositoryName"
243+
244+
$Version = Get-Version -RepositoryName $RepositoryName
245+
$v = "$($Version.Major).$($Version.Minor).$($Version.Patch)"
246+
# TODO: Maybe cleanup the replacement logic.
247+
switch ($RepositoryName) {
248+
"vscode-powershell" {
249+
$d = "Develop PowerShell scripts in Visual Studio Code!"
250+
if ($Version.PreReleaseLabel) {
251+
$name = "powershell-preview"
252+
$displayName = "PowerShell Preview"
253+
$preview = "true"
254+
$description = "(Preview) $d"
255+
} else {
256+
$name = "powershell"
257+
$displayName = "PowerShell"
258+
$preview = "false"
259+
$description = $d
260+
}
261+
$path = "package.json"
262+
$f = Get-Content -Path $path
263+
# NOTE: The prefix regex match two spaces exactly to avoid matching
264+
# nested objects in the file.
265+
$f = $f -replace '^(?<prefix> "name":\s+")(.+)(?<suffix>",)$', "`${prefix}${name}`${suffix}"
266+
$f = $f -replace '^(?<prefix> "displayName":\s+")(.+)(?<suffix>",)$', "`${prefix}${displayName}`${suffix}"
267+
$f = $f -replace '^(?<prefix> "version":\s+")(.+)(?<suffix>",)$', "`${prefix}${v}`${suffix}"
268+
$f = $f -replace '^(?<prefix> "preview":\s+)(.+)(?<suffix>,)$', "`${prefix}${preview}`${suffix}"
269+
$f = $f -replace '^(?<prefix> "description":\s+")(.+)(?<suffix>",)$', "`${prefix}${description}`${suffix}"
270+
$f | Set-Content -Path $path
271+
git add $path
272+
}
273+
"PowerShellEditorServices" {
274+
$path = "PowerShellEditorServices.Common.props"
275+
$f = Get-Content -Path $path
276+
$f = $f -replace '^(?<prefix>\s+<VersionPrefix>)(.+)(?<suffix></VersionPrefix>)$', "`${prefix}${v}`${suffix}"
277+
$f = $f -replace '^(?<prefix>\s+<VersionSuffix>)(.*)(?<suffix></VersionSuffix>)$', "`${prefix}$($Version.PreReleaseLabel)`${suffix}"
278+
$f | Set-Content -Path $path
279+
git add $path
280+
281+
$path = "module/PowerShellEditorServices/PowerShellEditorServices.psd1"
282+
$f = Get-Content -Path $path
283+
$f = $f -replace "^(?<prefix>ModuleVersion = ')(.+)(?<suffix>')`$", "`${prefix}${v}`${suffix}"
284+
$f | Set-Content -Path $path
285+
git add $path
286+
}
287+
}
288+
289+
if ($PSCmdlet.ShouldProcess("$RepositoryName/v$Version", "git commit")) {
290+
git commit -m "Bump version to v$Version"
291+
}
292+
293+
if ($PSCmdlet.ShouldProcess("$RepositoryName/v$Version", "git tag")) {
294+
git tag "v$Version"
295+
}
296+
297+
Pop-Location
298+
}
299+
209300
<#
210301
.SYNOPSIS
211302
Creates a new draft GitHub release from the updated changelog.
@@ -237,4 +328,4 @@ function New-DraftRelease {
237328
New-GitHubRelease @ReleaseParams
238329
}
239330

240-
Export-ModuleMember -Function Update-Changelog, New-DraftRelease
331+
Export-ModuleMember -Function Update-Changelog, Update-Version, New-DraftRelease

tools/postReleaseScripts/updateExtensionVersions.ps1

Lines changed: 0 additions & 244 deletions
This file was deleted.

0 commit comments

Comments
 (0)