eng/scripts/Update-VscodeExtensionVersion.ps1 (65 lines of code) (raw):

<# .SYNOPSIS Sets the version for the VSCode Extension .DESCRIPTION Sets the verison for the VSCode Extension based on provided `newVersion` or updates after release following these rules: * VSCode does not support prerelease qualifiers for extensions (e.g. -beta.1) source: https://code.visualstudio.com/api/working-with-extensions/publishing-extension#prerelease-extensions * Prevent unintended release by ensuring a prerelease qualifier is present in package.json when incrementing version (in this case 'alpha' has been used) * Upon release increment the minor version (e.g. y in x.y.z) 0.1.0 -> 0.2.0-alpha.1 0.1.0-alpha.1 -> 0.2.0-alpha.1 (this scenario is unlikely as versions with prerelease qualifiers are not supported) #> param( [string] $NewVersion ) $PACKAGE_JSON = "$PSScriptRoot../../../ext/vscode/package.json" . "$PSScriptRoot../../common/scripts/common.ps1" Set-StrictMode -Version 4 function getPackageJson { $packageJsonContent = Get-Content $PACKAGE_JSON -Raw $packageJson = ConvertFrom-Json $packageJsonContent return $packageJson } function getVersion { $versionString = (getPackageJson).version return [AzureEngSemanticVersion]::new($versionString) } function setVersion([string] $version) { $currentLocation = Get-Location try { Set-Location (Resolve-Path (Split-Path $PACKAGE_JSON -Parent)) npm version $version } finally { Set-Location $currentLocation } } $version = $NewVersion $unreleased = $false $replaceLatestEntryTitle = $true if (!$version) { # Increment after release $version = getVersion # This implementation differs from the implementation of # IncrementAndSetToPrerelease in that we always increment minor version # (incrementing only the prerelease version would require the releasing dev # to update the minor version manually before releasing) and that we use # the "alpha" prerelease label. # 0.1.0 -> 0.2.0-alpha.1 # 0.1.0-alpha.1 -> 0.2.0-alpha.1 (this scenario is unlikely as versions with prerelease qualifiers are not supported) $version.Minor++ $version.Patch = 0 $version.PrereleaseLabel = 'alpha' $version.PrereleaseNumber = 1 $version.IsPrerelease = $true $unreleased = $true $replaceLatestEntryTitle = $false } setVersion $version . "$PSScriptRoot/../common/scripts/Update-ChangeLog.ps1" ` -Version $version ` -ChangeLogPath "$PSScriptRoot/../../ext/vscode/CHANGELOG.md" ` -Unreleased $unreleased ` -ReplaceLatestEntryTitle $replaceLatestEntryTitle