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:
1 parent
6b28d42ea1
commit
18ffbb0e48
1 file changed
+10
-1
@@ -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"
|
||||
|
||||
|
||||
Reference in new issue
Block a user