diff --git a/scripts/PatchVersionPrefix.ps1 b/scripts/PatchVersionPrefix.ps1 new file mode 100755 index 0000000000..cf62428902 --- /dev/null +++ b/scripts/PatchVersionPrefix.ps1 @@ -0,0 +1,108 @@ +#!/usr/bin/env pwsh -c + +<# +.SYNOPSIS + Updates the version.props file in repos to a newer patch version +.PARAMETER Repos + A list of the repositories that should be patched +.PARAMETER Mode + Version bump options: Major, Minor, Patch +.PARAMETER VersionSuffix + The version suffix to use +#> +[cmdletbinding(SupportsShouldProcess = $true)] +param( + [Parameter(Mandatory = $true)] + [string[]]$Repos, + [Parameter(Mandatory = $true)] + [ValidateSet('Major', 'Minor', 'Patch')] + [string]$Mode, + [string]$VersionSuffix = $null, + [switch]$NoCommit +) + +$ErrorActionPreference = 'Stop' + +Import-Module -Scope Local -Force "$PSScriptRoot/common.psm1" + +function SetVersionSuffix([System.Xml.XmlNode]$node) { + if (-not $node) { + return + } + $node.InnerText = $VersionSuffix + return "Setting $($node.Name) to $VersionSuffix" +} + +function BumpVersion([System.Xml.XmlNode]$node) { + if (-not $node) { + return + } + [version] $version = $node.InnerText + + $experimental = $version.Major -eq 0 + + switch ($mode) { + { ($_ -ne 'Patch') -and $experimental} { + $node.InnerText = "{0}.{1}.{2}" -f $version.Major, ($version.Minor + 1), 0 + } + { ($_ -eq 'Major') -and -not $experimental } { + $node.InnerText = "{0}.{1}.{2}" -f ($version.Major + 1), 0, 0 + } + { ($_ -eq 'Minor') -and -not $experimental } { + $node.InnerText = "{0}.{1}.{2}" -f $version.Major, ($version.Minor + 1), 0 + } + 'Patch' { + $node.InnerText = "{0}.{1}.{2}" -f $version.Major, $version.Minor, ($version.Build + 1) + } + } + return "Bumping version from $version to $($node.InnerText)" +} + +foreach ($repo in $Repos) { + $repoPath = "$PSScriptRoot/../modules/$repo" + Push-Location $repoPath + try + { + $path = "$repoPath/version.props" + Write-Host -ForegroundColor Magenta "Updating $repo" + if (-not (Test-Path $path)) { + Write-Warning "$path does not exist" + continue + } + $path = Resolve-Path $path + Write-Verbose "$path" + [xml] $xml = LoadXml $path + + $suffix = $xml.SelectSingleNode('/Project/PropertyGroup/VersionSuffix') + if (-not $suffix) { + write-error "$path does not have VersionSuffix" + } + + if ($VersionSuffix) { + SetVersionSuffix $xml.SelectSingleNode('/Project/PropertyGroup/VersionSuffix') | write-host + SetVersionSuffix $xml.SelectSingleNode('/Project/PropertyGroup/ExperimentalProjectVersionSuffix') | write-host + SetVersionSuffix $xml.SelectSingleNode('/Project/PropertyGroup/ExperimentalVersionSuffix') | write-host + } + + $versionPrefix = $xml.SelectSingleNode('/Project/PropertyGroup/VersionPrefix') + $epxVersionPrefix = $xml.SelectSingleNode('/Project/PropertyGroup/ExperimentalProjectVersionPrefix') + $exVersionPrefix = $xml.SelectSingleNode('/Project/PropertyGroup/ExperimentalVersionPrefix') + BumpVersion $epxVersionPrefix | write-host + BumpVersion $exVersionPrefix | write-host + $message = BumpVersion $versionPrefix + Write-Host $message + + if ($PSCmdlet.ShouldProcess("Update $path")) { + SaveXml $xml $path + if (-not $NoCommit) { + Invoke-Block { & git add $path } + Invoke-Block { & git commit -m $message } + } + } + } + finally + { + Pop-Location + } +} + diff --git a/version.props b/version.props index ea205d06ca..37bc516397 100644 --- a/version.props +++ b/version.props @@ -1,16 +1,16 @@ - 2 - 2 + 3 + 0 0 $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).$(AspNetCorePatchVersion) - preview1 + alpha1 t000 - $(VersionPrefix) Preview 1 + $(VersionPrefix) Alpha 1 - 0.2.0 + 0.3.0 alpha1 $(PrereleaseVersionLabel) @@ -31,7 +31,6 @@ $(ExperimentalVersionPrefix)-$(ExperimentalVersionSuffix)-final $(ExperimentalVersionSuffix)-$(BuildNumber) - master