26 lines
1.0 KiB
Bash
Executable File
26 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# 用法:pr-wait.sh <owner/repo> <N>
|
||
# 阻塞到 head 為 issue-N 的 PR 有衝突、被關閉或合併,或議題被關閉。
|
||
# 最後一行印出原因:conflict | closed | merged | issue-closed
|
||
source "$(dirname "$0")/lib.sh"
|
||
REPO="${1:?}"; N="${2:?用法:pr-wait.sh <owner/repo> <N>}"
|
||
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
|