From d7b6adb82e4a2c1fa1d0e1ce552d525ffd7e1231 Mon Sep 17 00:00:00 2001 From: oberrich Date: Fri, 10 Jan 2025 07:52:46 +0100 Subject: [PATCH] chore: use nushell in ci --- .github/workflows/rust.yml | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 46925f1..b31d679 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -52,34 +52,40 @@ jobs: $installs = @( @{ Name = 'Chocolatey'; Url = 'https://chocolatey.org/install.ps1'; Hash = $null; Action = { & "${{github.workspace}}\install.ps1" }}, @{ Name = 'Visual Studio 2022 Build Tools (aarch64)'; Hash = $null; Url = $null; Action = { choco install visualstudio2022buildtools -y --no-progress --silent --package-parameters '--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.Windows11SDK.22621' }}, - @{ Name = 'Rust (nightly, aarch64)'; Url = 'https://win.rustup.rs/aarch64'; Hash = $null; Action = { & '${{github.workspace}}\rustup-init.exe' --default-host aarch64-pc-windows-msvc --default-toolchain nightly -y }}, - @{ Name = 'LLVM 19.1.5'; Url = 'https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.5/LLVM-19.1.5-woa64.exe'; Hash = ''; Action = { & '${{github.workspace}}\LLVM-19.1.5-woa64.exe' /S }}, + @{ Name = 'Rust (nightly, aarch64)'; Url = 'https://static.rust-lang.org/rustup/dist/aarch64-pc-windows-msvc/rustup-init.exe'; Hash = $null; Action = { & '${{github.workspace}}\rustup-init.exe' --default-host aarch64-pc-windows-msvc --default-toolchain nightly -y }}, + @{ Name = 'LLVM 19.1.5'; Url = 'https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.5/LLVM-19.1.5-woa64.exe'; Hash = 'https://static.rust-lang.org/rustup/dist/aarch64-pc-windows-msvc/rustup-init.exe.sha256'; Action = { & '${{github.workspace}}\LLVM-19.1.5-woa64.exe' /S }}, @{ Name = 'Git 2.48.0-rc1'; Url = 'https://github.com/git-for-windows/git/releases/download/v2.48.0-rc2.windows.1/Git-2.48.0-rc2-arm64.exe'; Hash = '712739bb49832d571732e3e74b111d7cb4a63cd622ef3e87d01efe35046d9a4f'; Action = { & '${{github.workspace}}\Git-2.48.0-rc2-arm64.exe' /VERYSILENT }} ) - + $installs | ForEach-Object { - Write-Host "Downloading $($_.Name) from $($_.Url)..." + Log "Downloading $($_.Name) from $($_.Url)..." Invoke-WebRequest -Uri $_.Url -OutFile (Join-Path ${{github.workspace}} (Split-Path $_.Url -Leaf)) if ($_.Hash) { - $downloadedHash = (Get-FileHash -Path $filePath -Algorithm SHA256).Hash - if ($downloadedHash -eq $_.Hash) { - Write-Host "$($_.Name) hash verified successfully." - } else { - Write-Host "Hash mismatch for $($_.Name). Expected: $($_.Hash), Got: $downloadedHash" - Log "Failed to verify hash for $($_.Name)." - return - } + $expectedHash = if ($_.Hash -like "*.sha256") { + Invoke-WebRequest -Uri $_.Hash -OutFile (Join-Path ${{github.workspace}} (Split-Path $_.Hash -Leaf)) + (Get-Content -Path $hashFile).Trim() + } else { + $_.Hash + } + + $downloadedHash = (Get-FileHash -Path $filePath -Algorithm SHA256).Hash + if ($downloadedHash -eq $expectedHash) { + Log "$($_.Name) hash verified successfully." + } else { + Log "Hash mismatch for $($_.Name). Expected: $expectedHash, Got: $downloadedHash" + return + } } else { - Write-Host "No hash specified for $($_.Name). Skipping hash verification." + Log "No hash specified for $($_.Name). Skipping hash verification." } Log "Starting installation of $($_.Name)..." try { - & $_.Action > $null 2>&1 - Log "$($_.Name) installation completed." + & $_.Action > $null 2>&1 + Log "$($_.Name) installation completed." } catch { - Log "Failed to install $($_.Name)." + Log "Failed to install $($_.Name)." } }