#!/usr/bin/env bash # 用法:pr-wait.sh # 阻塞到 head 為 issue-N 的 PR 有衝突、被關閉或合併,或議題被關閉。 # 最後一行印出原因:conflict | closed | merged | issue-closed source "$(dirname "$0")/lib.sh" REPO="${1:?}"; N="${2:?用法:pr-wait.sh }" while :; do read -r PR STATE MERGEABLE <<<"$(pr_for_issue "$REPO" "$N")" || true if [ -z "${PR:-}" ]; then echo "還沒有 head 為 issue-$N 的 PR,$INTERVAL 秒後再查" else case "$STATE" in merged) echo "PR #$PR 已合併"; echo merged; exit 0 ;; closed) echo "PR #$PR 被關閉(未合併)"; echo closed; exit 0 ;; open) if [ "$MERGEABLE" = "false" ]; then sleep 60 read -r _ _ AGAIN <<<"$(pr_for_issue "$REPO" "$N")" if [ "$AGAIN" = "false" ]; then echo "PR #$PR 與 main 有衝突"; echo conflict; exit 0; fi fi ;; esac fi if [ "$(issue_state "$REPO" "$N")" = "closed" ]; then echo "議題 #$N 已關閉"; echo issue-closed; exit 0; fi sleep "$INTERVAL" done