From 18ffbb0e483dae73ca668c7683beba6a836800c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=9F=8F=E9=9D=92?= Date: Thu, 4 Jun 2026 12:57:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20cask=20intel=20sed=20=E9=94=9A?= =?UTF-8?q?=E5=AE=9A=20sha256=20=E8=A1=8C=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E8=AF=AF=E6=94=B9=20arch=20=E6=8C=87=E4=BB=A4=20(@claude=20rev?= =?UTF-8?q?iew)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 裸 s/intel: "..."/ 会同时命中 cask 第2行 arch arm: "aarch64", intel: "x64",把 arch 的 intel 改成哈希 → Intel Mac 用户 brew 安装 404。改用 ^[[:space:]]*intel: 锚定 sha256 块行(捕获组保留缩进),并加防呆:arch 指令被破坏或 sha256 没写进去就让 job 失败。本地模拟新旧 sed 对比已验证。 --- .github/workflows/release-tauri.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-tauri.yml b/.github/workflows/release-tauri.yml index 66b12807..bfe4797a 100644 --- a/.github/workflows/release-tauri.yml +++ b/.github/workflows/release-tauri.yml @@ -697,9 +697,18 @@ jobs: run: | set -euo pipefail cask="Casks/openless.rb" + # ⚠️ cask 第 2 行 `arch arm: "aarch64", intel: "x64"` 也含 `intel: "..."`, + # 裸 `s/intel: "..."/` 会把 arch 指令一起改成哈希 → Intel 用户 brew 装包 404。 + # 所以 intel 的 sed 用 `^[[:space:]]*intel:` 锚定 sha256 块那一行;arm 的 sed + # 靠 `sha256 arm: ` 前缀天然只命中 sha256 行。捕获组 \1 保留原缩进。 sed -i "s/version \"[^\"]*\"/version \"$VERSION\"/" "$cask" sed -i "s/sha256 arm: \"[^\"]*\"/sha256 arm: \"$ARM_SHA\"/" "$cask" - sed -i "s/intel: \"[^\"]*\"/intel: \"$INTEL_SHA\"/" "$cask" + sed -i "s/^\([[:space:]]*\)intel: \"[^\"]*\"/\1intel: \"$INTEL_SHA\"/" "$cask" + # 防呆:arch 指令必须原样保留,且本次 sha256 必须确实写进去了,否则让 job 失败。 + grep -q 'arch arm: "aarch64", intel: "x64"' "$cask" \ + || { echo "::error::arch 指令被 sed 误伤"; exit 1; } + grep -q "\"$ARM_SHA\"" "$cask" && grep -q "\"$INTEL_SHA\"" "$cask" \ + || { echo "::error::sha256 未正确写入 cask"; exit 1; } echo "----- updated $cask -----" cat "$cask"