diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9341ff6144..45dc7c5168 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -131,13 +131,13 @@ jobs: - name: Check workspace-hack Cargo.toml is up-to-date run: | cargo hakari generate --diff || { - echo "To fix, run script/update-workspace-hack"; + echo "To fix, run script/update-workspace-hack or script/update-workspace-hack.ps1"; false } - name: Check all crates depend on workspace-hack run: | cargo hakari manage-deps --dry-run || { - echo "To fix, run script/update-workspace-hack" + echo "To fix, run script/update-workspace-hack or script/update-workspace-hack.ps1" false } diff --git a/script/update-workspace-hack.ps1 b/script/update-workspace-hack.ps1 new file mode 100644 index 0000000000..0606607249 --- /dev/null +++ b/script/update-workspace-hack.ps1 @@ -0,0 +1,36 @@ +$ErrorActionPreference = "Stop" + +$HAKARI_VERSION = "0.9" + +$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path +Set-Location (Split-Path -Parent $scriptPath) + +$hakariInstalled = $false +try { + $versionOutput = cargo hakari --version 2>&1 + if ($versionOutput -match "cargo-hakari $HAKARI_VERSION") { + $hakariInstalled = $true + } +} +catch { + $hakariInstalled = $false +} + +if (-not $hakariInstalled) { + Write-Host "Installing cargo-hakari@^$HAKARI_VERSION..." + cargo install "cargo-hakari@^$HAKARI_VERSION" + if ($LASTEXITCODE -ne 0) { + throw "Failed to install cargo-hakari@^$HAKARI_VERSION" + } +} +else { + Write-Host "cargo-hakari@^$HAKARI_VERSION is already installed." +} + +# update the workspace-hack crate +cargo hakari generate +if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + +# make sure workspace-hack is added as a dep for all crates in the workspace +cargo hakari manage-deps +if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }