Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 32 additions & 2 deletions eng/scripts/Language-Settings.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,44 @@ $packagePattern = "Cargo.toml"
$GithubUri = "https://github.com/Azure/azure-sdk-for-rust"
$PackageRepositoryUri = "https://crates.io/crates"

function Get-AllPackageInfoFromRepo ([string] $ServiceDirectory) {
function SetPackageVersion ($PackageName, $Version, $ServiceDirectory, $ReleaseDate, $ReplaceLatestEntryTitle=$true)
{
if($null -eq $ReleaseDate)
{
$ReleaseDate = Get-Date -Format "yyyy-MM-dd"
}
& "$EngDir/scripts/Update-PackageVersion.ps1" -ServiceDirectory $ServiceDirectory -PackageName $PackageName `
-NewVersionString $Version -ReleaseDate $ReleaseDate -ReplaceLatestEntryTitle $ReplaceLatestEntryTitle
}

function GetExistingPackageVersions ($PackageName, $GroupId=$null)
{
try {
$PackageName = $PackageName.ToLower()
$response = Invoke-RestMethod -Method GET -Uri "https://crates.io/api/v1/crates/${PackageName}/versions"
$existingVersions = $response.versions `
| Sort-Object { [AzureEngSemanticVersion]::new($_.num) } `
| Select-Object -ExpandProperty num
return $existingVersions
}
catch {
if ($_.Exception.Response.StatusCode -ne 404)
{
LogError "Failed to retrieve package versions for ${PackageName}. $($_.Exception.Message)"
}
return $null
}
}

function Get-AllPackageInfoFromRepo ([string] $ServiceDirectory)
{
$allPackageProps = @()
Push-Location $RepoRoot
try {
$searchPath = Join-Path $RepoRoot 'sdk' -Resolve

if ($ServiceDirectory -and $ServiceDirectory -ne 'auto') {
$searchPath = Join-Path 'sdk' $ServiceDirectory
$searchPath = Join-Path 'sdk' $ServiceDirectory -Resolve
}

$packages = cargo metadata --format-version 1
Expand Down
81 changes: 81 additions & 0 deletions eng/scripts/Update-PackageVersion.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<#
.SYNOPSIS
Bumps up package versions after release

.DESCRIPTION
This script bumps up package versions following conventions defined at https://github.com/Azure/azure-sdk/blob/main/docs/policies/releases.md#incrementing-after-release-net

.PARAMETER ServiceDirectory
The Name of the Service Directory

.PARAMETER PackageName
The Name of the Package

.PARAMETER NewVersionString
Use this to overide version incement logic and set a version specified by this parameter

.EXAMPLE
Updating package version for Azure.Core
Update-PackageVersion.ps1 -ServiceDirectory core -PackageName azure_core

Updating package version for Azure.Core with a specified verion
Update-PackageVersion.ps1 -ServiceDirectory core -PackageName azure_core -NewVersionString 2.0.5

Updating package version for Azure.Core with a specified verion and release date
Update-PackageVersion.ps1 -ServiceDirectory core -PackageName azure_core -NewVersionString 2.0.5 -ReleaseDate "2020-05-01"
#>

[CmdletBinding()]
Param (
[Parameter(Mandatory = $True)]
[string] $ServiceDirectory,
[Parameter(Mandatory = $True)]
[string] $PackageName,
[string] $NewVersionString,
[string] $ReleaseDate,
[boolean] $ReplaceLatestEntryTitle = $true
)

. (Join-Path $PSScriptRoot '../common/scripts/common.ps1')

$pkgProperties = Get-PkgProperties -PackageName $PackageName -ServiceDirectory $ServiceDirectory
$packageVersion = $pkgProperties.Version

$packageSemVer = [AzureEngSemanticVersion]::new($packageVersion)

if ([System.String]::IsNullOrEmpty($NewVersionString)) {
$packageSemVer.IncrementAndSetToPrerelease();

& "$EngCommonScriptsDir/Update-ChangeLog.ps1" -Version $packageSemVer.ToString() `
-ChangelogPath $pkgProperties.ChangeLogPath -Unreleased $True
}
else {
$packageSemVer = [AzureEngSemanticVersion]::new($NewVersionString)

& "$EngCommonScriptsDir/Update-ChangeLog.ps1" -Version $packageSemVer.ToString() `
-ChangelogPath $pkgProperties.ChangeLogPath -Unreleased $False `
-ReplaceLatestEntryTitle $ReplaceLatestEntryTitle -ReleaseDate $ReleaseDate
}


if ($packageSemVer.HasValidPrereleaseLabel() -ne $true) {
Write-Error "Invalid prerelease label: $packageSemVer"
exit 1
}

$tomlPath = Join-Path $pkgProperties.DirectoryPath "Cargo.toml"
$content = Get-Content -Path $tomlPath -Raw
$updated = $content -replace '([package](.|\n)+?version\s*=\s*)"(.+?)"', "`$1`"$packageSemVer`""

if($content -ne $updated)
{
$updated | Set-Content -Path $tomlPath -Encoding utf8 -NoNewLine
Write-Host "Updated version in $tomlPath from $packageVersion to $packageSemVer."

cargo metadata --format-version 1 | Out-Null
Write-Host "Updated Cargo.lock using 'cargo metadata'."
}
else
{
Write-Host "$tomlPath already contains version $packageSemVer"
}