mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-27 00:37:50 +08:00
76 lines
2.5 KiB
PowerShell
76 lines
2.5 KiB
PowerShell
|
[CmdletBinding()]
|
||
|
Param(
|
||
|
[Parameter(Mandatory=$true)]
|
||
|
[ValidateNotNullOrEmpty()]
|
||
|
[string]$Date
|
||
|
)
|
||
|
|
||
|
function Get-Sha256 {
|
||
|
Param([string]$File)
|
||
|
$content = [System.IO.File]::ReadAllBytes($File)
|
||
|
$shaHasher = $null
|
||
|
[string]$shaHash = ''
|
||
|
try {
|
||
|
$shaHasher = [System.Security.Cryptography.SHA256]::Create()
|
||
|
$hashBytes = $shaHasher.ComputeHash($content)
|
||
|
$shaHash = [System.BitConverter]::ToString($hashBytes).Replace('-', '').ToLowerInvariant()
|
||
|
} finally {
|
||
|
if ($shaHasher -ne $null) {
|
||
|
$shaHasher.Dispose();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $shaHash
|
||
|
}
|
||
|
|
||
|
[string]$metadata = "VCPKG_TOOL_RELEASE_TAG=$Date`n"
|
||
|
$vsCodeHashes = [ordered]@{}
|
||
|
Set-Content -LiteralPath "$PSScriptRoot\vcpkg-tool-metadata.txt" -Value $metadata -NoNewline -Encoding utf8NoBOM
|
||
|
& "$PSScriptRoot\bootstrap.ps1"
|
||
|
[string]$vcpkg = "$PSScriptRoot\..\vcpkg.exe"
|
||
|
|
||
|
# Windows arm64 (VS Code only)
|
||
|
& $vcpkg x-download "$PSScriptRoot\vcpkg-arm64.exe" `
|
||
|
"--url=https://github.com/microsoft/vcpkg-tool/releases/download/$Date/vcpkg-arm64.exe" --skip-sha512
|
||
|
$vsCodeHashes["vcpkg-arm64.exe"] = Get-Sha256 "$PSScriptRoot\vcpkg-arm64.exe"
|
||
|
|
||
|
# Linux Binaries
|
||
|
foreach ($binary in @('macos', 'muslc', 'glibc')) {
|
||
|
$caps = $binary.ToUpperInvariant()
|
||
|
& $vcpkg x-download "$PSScriptRoot\vcpkg-$binary" `
|
||
|
"--url=https://github.com/microsoft/vcpkg-tool/releases/download/$Date/vcpkg-$binary" --skip-sha512
|
||
|
$sha512 = & $vcpkg hash "$PSScriptRoot\vcpkg-$binary"
|
||
|
$metadata += "VCPKG_$($caps)_SHA=$sha512`n"
|
||
|
$vsCodeHashes["vcpkg-$binary"] = Get-Sha256 "$PSScriptRoot\vcpkg-$binary"
|
||
|
}
|
||
|
|
||
|
# Windows x64 (assumed to be host)
|
||
|
$vsCodeHashes["vcpkg.exe"] = Get-Sha256 "$vcpkg"
|
||
|
|
||
|
# Source
|
||
|
$sourceName = "$Date.tar.gz"
|
||
|
& $vcpkg x-download "$PSScriptRoot\$sourceName" `
|
||
|
"--url=https://github.com/microsoft/vcpkg-tool/archive/refs/tags/$Date.tar.gz" --skip-sha512
|
||
|
$sha512 = & $vcpkg hash "$PSScriptRoot\$sourceName"
|
||
|
$metadata += "VCPKG_TOOL_SOURCE_SHA=$sha512`n"
|
||
|
|
||
|
# Cleanup
|
||
|
Remove-Item @(
|
||
|
"$PSScriptRoot\vcpkg-arm64.exe",
|
||
|
"$PSScriptRoot\vcpkg-macos",
|
||
|
"$PSScriptRoot\vcpkg-muslc",
|
||
|
"$PSScriptRoot\vcpkg-glibc",
|
||
|
"$PSScriptRoot\$sourceName"
|
||
|
)
|
||
|
|
||
|
Set-Content -LiteralPath "$PSScriptRoot\vcpkg-tool-metadata.txt" -Value $metadata -NoNewline -Encoding utf8NoBOM
|
||
|
|
||
|
Write-Host "Metadata Written"
|
||
|
Write-Host "VS Code Block"
|
||
|
$vsCodeOverall = [ordered]@{
|
||
|
version = $Date;
|
||
|
hashes = $vsCodeHashes;
|
||
|
}
|
||
|
|
||
|
Write-Host (ConvertTo-Json $vsCodeOverall)
|