fix(ci): cask intel sed 锚定 sha256 行,避免误改 arch 指令 (@claude review)

裸 s/intel: "..."/ 会同时命中 cask 第2行 arch arm: "aarch64", intel: "x64",把 arch 的 intel 改成哈希 → Intel Mac 用户 brew 安装 404。改用 ^[[:space:]]*intel: 锚定 sha256 块行(捕获组保留缩进),并加防呆:arch 指令被破坏或 sha256 没写进去就让 job 失败。本地模拟新旧 sed 对比已验证。
This commit is contained in:
吕柏青 committed 2026-06-04 12:57:31 +08:00
1 parent 6b28d42ea1
commit 18ffbb0e48
1 file changed
+10 -1
+10 -1
View File
@@ -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"