Files
fileworkbench/scripts/bootstrap-wrapper.ps1
zemion db873063f8
Verify source and build Android / android (push) Canceled after 0s
initial commit v 0.2.0
2026-09-24 22:49:27 +02:00

41 lines
2.4 KiB
PowerShell

$ErrorActionPreference = 'Stop'
$Root = Split-Path $PSScriptRoot -Parent
$Jar = Join-Path $Root 'gradle/wrapper/gradle-wrapper.jar'
$Work = Join-Path (Split-Path $Jar) "bootstrap.$([guid]::NewGuid().ToString('N'))"
$Temp = Join-Path $Work 'wrapper.jar'
$Expected = '7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172'
$DistExpected = '6f74b601422d6d6fc4e1f9a1ab6522f642c2fdcbc15ae33ebd30ba3d7198e854'
New-Item -ItemType Directory -Force -Path $Work | Out-Null
try {
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -UseBasicParsing -Uri 'https://raw.githubusercontent.com/gradle/gradle/v8.14.5/gradle/wrapper/gradle-wrapper.jar' -OutFile $Temp
$Actual = (Get-FileHash -Algorithm SHA256 $Temp).Hash.ToLowerInvariant()
if ($Actual -ne $Expected) {
Write-Host 'Tag wrapper differs from release; retrieving the verified release distribution.'
$Dist = Join-Path $Work 'gradle.zip'
Invoke-WebRequest -UseBasicParsing -Uri 'https://services.gradle.org/distributions/gradle-8.14.5-bin.zip' -OutFile $Dist
if ((Get-FileHash -Algorithm SHA256 $Dist).Hash.ToLowerInvariant() -ne $DistExpected) {
throw 'Distribution checksum mismatch; refusing to execute.'
}
Add-Type -AssemblyName System.IO.Compression.FileSystem
$Outer = [IO.Compression.ZipFile]::OpenRead($Dist)
try {
$Entries = @($Outer.Entries | Where-Object { $_.FullName -match '/gradle-wrapper-main-8\.14\.5\.jar$' })
if ($Entries.Count -ne 1) { throw 'Expected exactly one wrapper-main JAR.' }
$Main = Join-Path $Work 'wrapper-main.jar'
[IO.Compression.ZipFileExtensions]::ExtractToFile($Entries[0], $Main, $true)
} finally { $Outer.Dispose() }
$Inner = [IO.Compression.ZipFile]::OpenRead($Main)
try {
$Entry = $Inner.GetEntry('gradle-wrapper.jar')
if ($null -eq $Entry) { throw 'Embedded wrapper missing.' }
[IO.Compression.ZipFileExtensions]::ExtractToFile($Entry, $Temp, $true)
} finally { $Inner.Dispose() }
if ((Get-FileHash -Algorithm SHA256 $Temp).Hash.ToLowerInvariant() -ne $Expected) {
throw 'Embedded wrapper checksum mismatch; refusing to execute.'
}
}
Move-Item -Force $Temp $Jar
Write-Host 'Official Gradle 8.14.5 wrapper verified.'
} finally { if (Test-Path $Work) { Remove-Item -Recurse -Force $Work } }