Consolidate Powershell version parsing to eng\common (#59)
* Consolidate Powershell version parsing to eng\common
This commit is contained in:
parent
10f27f2034
commit
e7975164a5
@ -22,14 +22,11 @@ Use this to overide version incement logic and set a version specified by this p
|
||||
|
||||
|
||||
.EXAMPLE
|
||||
Updating package version for Azure.Core
|
||||
Update-PkgVersion.ps1 -ServiceDirectory core -PackageName Azure.Core
|
||||
Updating package version for azure-core
|
||||
Update-PkgVersion.ps1 -ServiceDirectory core -PackageName azure-core
|
||||
|
||||
Updating package version for Azure.Core with a specified verion
|
||||
Update-PkgVersion.ps1 -ServiceDirectory core -PackageName Azure.Core -NewVersionString 2.0.5
|
||||
|
||||
Updating package version for Microsoft.Azure.CognitiveServices.AnomalyDetector
|
||||
Update-PkgVersion.ps1 -ServiceDirectory cognitiveservices -PackageName Microsoft.Azure.CognitiveServices.AnomalyDetector -PackageDirName AnomalyDetector
|
||||
Updating package version for azure-core with a specified verion
|
||||
Update-PkgVersion.ps1 -ServiceDirectory core -PackageName azure-core -NewVersionString 2.0.5
|
||||
|
||||
#>
|
||||
|
||||
@ -44,99 +41,41 @@ Param (
|
||||
[string] $PackageDirName,
|
||||
[string] $NewVersionString
|
||||
)
|
||||
# Regular expression as specified in https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
|
||||
$VERSION_REGEX = "^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$"
|
||||
|
||||
# Updated Version in csproj and changelog using computed or set NewVersionString
|
||||
function Update-Version($Unreleased=$True, $ReplaceVersion=$False)
|
||||
. ${PSScriptRoot}\common\scripts\SemVer.ps1
|
||||
|
||||
# Updated Version in version file and changelog using computed or set NewVersionString
|
||||
function Update-Version([AzureEngSemanticVersion]$SemVer, $Unreleased=$True, $ReplaceVersion=$False)
|
||||
{
|
||||
Write-Verbose "New Version: ${NewPackageVersion}"
|
||||
Set-Content -Path $PackageVersionPath -Value ${NewPackageVersion}
|
||||
Write-Verbose "New Version: $SemVer"
|
||||
if ($SemVer.HasValidPrereleaseLabel() -ne $true){
|
||||
Write-Error "Invalid prerelease label"
|
||||
exit 1
|
||||
}
|
||||
|
||||
Set-Content -Path $PackageVersionPath -Value $SemVer.ToString()
|
||||
|
||||
# Increment Version in ChangeLog file
|
||||
& "${PSScriptRoot}/common/Update-Change-Log.ps1" -Version $NewPackageVersion -ChangeLogPath $ChangelogPath -Unreleased $Unreleased -ReplaceVersion $ReplaceVersion
|
||||
}
|
||||
|
||||
# Parse a VersionString to verify that it is right
|
||||
function Parse-Version($VersionString)
|
||||
{
|
||||
if ([System.String]::IsNullOrEmpty($VersionString))
|
||||
{
|
||||
Write-Error "Missing or Empty Version property ${VersionString}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if ($VersionString -Match $VERSION_REGEX)
|
||||
{
|
||||
if($Matches[4] -eq $null){$Pre = @()}
|
||||
else{$Pre = $Matches[4].Split(".")}
|
||||
$VersionTable = @{
|
||||
major = [int]$Matches[1]
|
||||
minor = [int]$Matches[2]
|
||||
patch = [int]$Matches[3]
|
||||
pretag = [string]$Pre[0]
|
||||
prever = [int]$Pre[1]
|
||||
}
|
||||
|
||||
if ($VersionTable['pretag'] -ne '' -and $VersionTable['pretag'] -ne 'preview')
|
||||
{
|
||||
Write-Error "Unexpected pre-release identifier '$($VersionTable['pretag'])', should be 'preview'"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if ($VersionTable['pretag'] -eq 'preview' -and $VersionTable['prever'] -lt 1)
|
||||
{
|
||||
Write-Error "Unexpected pre-release version '$($VersionTable['prever'])', should be greater than '1'"
|
||||
exit 1
|
||||
}
|
||||
return $VersionTable
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Error "Version property contains incorrect format. It should be in format 'X.Y.Z[-preview.N]'"
|
||||
exit 1
|
||||
}
|
||||
& "${PSScriptRoot}/common/Update-Change-Log.ps1" -Version $SemVer.ToString() -ChangeLogPath $ChangelogPath -Unreleased $Unreleased -ReplaceVersion $ReplaceVersion
|
||||
}
|
||||
|
||||
# Obtain Current Package Version
|
||||
|
||||
if ([System.String]::IsNullOrEmpty($PackageDirName)) {$PackageDirName = $PackageName}
|
||||
$PackageVersionPath = Join-Path $RepoRoot "sdk" $ServiceDirectory $PackageDirName "version.txt"
|
||||
$ChangelogPath = Join-Path $RepoRoot "sdk" $ServiceDirectory $PackageDirName "CHANGELOG.md"
|
||||
$PackageVersion = Get-Content -Path $PackageVersionPath
|
||||
|
||||
|
||||
if ([System.String]::IsNullOrEmpty($NewVersionString))
|
||||
{
|
||||
$VersionTable = Parse-Version($PackageVersion)
|
||||
$SemVer = [AzureEngSemanticVersion]::new($PackageVersion)
|
||||
Write-Verbose "Current Version: ${PackageVersion}"
|
||||
# Increment Version
|
||||
if ([System.String]::IsNullOrEmpty($VersionTable['pretag']))
|
||||
{
|
||||
$VersionTable['pretag'] = 'preview'
|
||||
$VersionTable['prever'] = 1
|
||||
$VersionTable['minor']++
|
||||
$VersionTable['patch'] = 0
|
||||
}
|
||||
else
|
||||
{
|
||||
$VersionTable['prever']++
|
||||
}
|
||||
|
||||
$NewPackageVersion = "{0}.{1}.{2}-{3}.{4}" -F $VersionTable['major'], $VersionTable['minor'], $VersionTable['patch'], $VersionTable['pretag'], $VersionTable['prever']
|
||||
Update-Version
|
||||
$SemVer.IncrementAndSetToPrerelease()
|
||||
Update-Version -SemVer $SemVer
|
||||
}
|
||||
else
|
||||
{
|
||||
# Use specified VersionString
|
||||
$VersionTable = Parse-Version($NewVersionString)
|
||||
if ($VersionTable['pretag'] -eq '')
|
||||
{
|
||||
$NewPackageVersion = "{0}.{1}.{2}" -F $VersionTable['major'], $VersionTable['minor'], $VersionTable['patch']
|
||||
}
|
||||
else
|
||||
{
|
||||
$NewPackageVersion = "{0}.{1}.{2}-{3}.{4}" -F $VersionTable['major'], $VersionTable['minor'], $VersionTable['patch'], $VersionTable['pretag'], $VersionTable['prever']
|
||||
}
|
||||
Update-Version -Unreleased $False -ReplaceVersion $True
|
||||
$SemVer = [AzureEngSemanticVersion]::new($NewVersionString)
|
||||
Update-Version -SemVer $SemVer -Unreleased $False -ReplaceVersion $True
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user