#!/usr/bin/env bash # 按 tests/integration/lifecycle/rdm.pin 取出固定 SHA。只接受 40 位 hex。 # 不执行 pin 文件,不接受 URL。检出由调用方用已允许的 RDM origin 完成。 set -euo pipefail pin="${1:-tests/integration/lifecycle/rdm.pin}" [ -f "$pin" ] || { echo "rdm.pin 不存在:$pin" >&2; exit 1; } declare -A got=() while IFS= read -r line || [ -n "$line" ]; do case "$line" in ''|\#*) continue ;; esac key="${line%%=*}" val="${line#*=}" case "$key" in sha|prev_sha|legacy_sha) ;; *) echo "rdm.pin 未知键:$key" >&2; exit 1 ;; esac case "$val" in [0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]) ;; *) echo "rdm.pin 的 $key 不是 40 位 hex" >&2; exit 1 ;; esac got["$key"]="$val" done < "$pin" [ "${#got[@]}" -eq 3 ] || { echo "rdm.pin 必须同时有 sha、prev_sha、legacy_sha" >&2; exit 1; } printf '%s\n' "${got[sha]}"