azure-sdk-for-cpp/eng/scripts/Update-VcpkgBeta.ps1
Anton Kolesnyk 39392a8181
Publishing to vcpkg-betas syncs vcpkg baseline to our repo (#5330)
* Publishing to vcpkg-betas syncs vcpkg baseline to our repo

* PR Feedback

---------

Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2024-02-15 16:31:00 -08:00

101 lines
3.7 KiB
PowerShell

param(
[string] $VcpkgBetaFolder,
[string] $VcpkgFolder,
[string] $ReleaseArtifactSourceDirectory,
[string] $VcpkgPortName,
[string] $GitCommitParameters,
[string] $BuildIdentifier = $env:BUILD_BUILDID
)
."$PSScriptRoot/../common/scripts/common.ps1"
Set-StrictMode -Version 3
# To ensure a clean synchronization remove all files at the destination.
# This ensures that files no longer present in the build output do not
# persist in later versions.
$portFolder = "$VcpkgBetaFolder/ports/$VcpkgPortName"
if (Test-Path $portFolder) {
Remove-Item $portFolder -Recurse -Force
}
New-Item -ItemType Directory -Path $portFolder
Copy-Item `
-Path "$ReleaseArtifactSourceDirectory/vcpkg/port/*" `
-Destination $portFolder
$rawPackageInfo = Get-Content -Raw -Path $ReleaseArtifactSourceDirectory/package-info.json
$packageInfo = ConvertFrom-Json $rawPackageInfo
$originalLocation = Get-Location
try {
Set-Location $VcpkgFolder
if ($IsWindows) {
Write-Host "./bootstrap-vcpkg.bat"
./bootstrap-vcpkg.bat
} else {
Write-Host "./bootstrap-vcpkg.sh"
./bootstrap-vcpkg.sh
}
Set-Location $VcpkgBetaFolder
Write-Host "$VcpkgFolder/vcpkg x-update-baseline --vcpkg-root=. --x-scripts-root=$VcpkgFolder/scripts"
& $VcpkgFolder/vcpkg x-update-baseline `
--vcpkg-root=. `
--x-scripts-root=$VcpkgFolder/scripts
Write-Host "$VcpkgFolder/vcpkg format-manifest --all --vcpkg-root=. --x-scripts-root=$VcpkgFolder/scripts"
& $VcpkgFolder/vcpkg format-manifest `
--all `
--vcpkg-root=. `
--x-scripts-root=$VcpkgFolder/scripts
Write-Host "git add -A"
git add -A
Write-Host "git $GitCommitParameters commit -m `"$(Get-Date -Format "yyyy-MM-dd" ): $VcpkgPortName $($packageInfo.version)`""
Invoke-Expression "git $GitCommitParameters commit -m `"$(Get-Date -Format "yyyy-MM-dd" ): $VcpkgPortName $($packageInfo.version)`""
Write-Host "$VcpkgFolder/vcpkg x-add-version $VcpkgPortName --vcpkg-root=. --x-scripts-root=$VcpkgFolder/scripts"
& $VcpkgFolder/vcpkg x-add-version `
$VcpkgPortName `
--vcpkg-root=. `
--x-scripts-root=$VcpkgFolder/scripts
Write-Host "git add -A"
git add -A
Write-Host "git $GitCommitParameters commit --amend --no-edit"
Invoke-Expression "git $GitCommitParameters commit --amend --no-edit"
# WARNING: You may not use the normal
Write-Host "git log -1 --format=format:%H"
$baseHash = git log -1 --format=format:%H
Write-Host "New Baseline: $baseHash"
# Update vcpkg-configuration.json to include this package and set the
# baseline
$vcpkgConfigPath = "$VcpkgBetaFolder/vcpkg-configuration.json"
$rawVcpkgConfig = Get-Content -Raw -Path $vcpkgConfigPath
$vcpkgConfig = ConvertFrom-Json $rawVcpkgConfig
$azSdkRepoBaseline = (Get-Content $PSScriptRoot/../../vcpkg.json -Raw -ErrorAction SilentlyContinue | ConvertFrom-Json).'builtin-baseline'
if ($azSdkRepoBaseline -and $vcpkgConfig.'default-registry'.baseline) {
$vcpkgConfig.'default-registry'.baseline = $azSdkRepoBaseline
}
$vcpkgConfig.registries[0].baseline = $baseHash
if (!($vcpkgConfig.registries[0].packages -contains $VcpkgPortName)) {
$vcpkgConfig.registries[0].packages += $VcpkgPortName
$vcpkgConfig.registries[0].packages = $vcpkgConfig.registries[0].packages | Sort-Object
}
$vcpkgConfigJson = ConvertTo-Json $vcpkgConfig -Depth 100
Set-Content -Path $vcpkgConfigPath -Value $vcpkgConfigJson
Write-Host "git add -A"
git add -A
Write-Host "git $GitCommitParameters commit -m `"Update vcpkg-configuration.json`""
"git $GitCommitParameters commit -m 'Update vcpkg-configuration.json'"
} finally {
Set-Location $originalLocation
}