windows: Add `update-workspace-hack.ps1` script (#28219)
张小白
created
Release Notes:
- N/A
Change summary
.github/workflows/ci.yml | 4 +-
script/update-workspace-hack.ps1 | 36 ++++++++++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 2 deletions(-)
Detailed changes
@@ -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
}
@@ -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 }