fix(implement): 明確指定分析頁檢查工作包相依
This commit is contained in:
+21
-8
@@ -16,9 +16,10 @@
|
||||
# --since 只印比該時間更新的留言,值用上一輪印出的 latest=(UTC,形如 2026-08-25T10:19:59Z)。
|
||||
# wp-gate.sh lock {owner}/{repo} {index}
|
||||
# PR 開好之後上鎖,讓閘門跨工作階段有效。轉呼叫 sdlc-gate.sh wp-lock。
|
||||
# wp-gate.sh check-deps {owner}/{repo} {wp-number}
|
||||
# wp-gate.sh check-deps {owner}/{repo} {wp-number} --analyze {分析頁頁名}
|
||||
# 候選工作包能不能挑:活抓分析頁 WBS 表的相依欄,逐一核對每個相依工作包的狀態欄與
|
||||
# PR 欄(PR 有給就活查 Gitea 是否已合併),不吃 implement 技能自己讀到的任何快取或判斷。
|
||||
# 分析頁由呼叫端明確指定;沒帶 --analyze 直接拒絕,不用存取庫 hash 猜頁名。
|
||||
# 只認同一張分析頁上的 WP-NN 編號;相依欄裡指到別份計畫或別頁分析的文字項目查不了,
|
||||
# 照樣放行但會在說明裡列出來,要求人工確認。
|
||||
# wp-gate.sh claim {owner}/{repo} {wp-number} [--analyze {分析頁頁名}]
|
||||
@@ -88,7 +89,7 @@ usage() {
|
||||
cat >&2 <<'EOF'
|
||||
用法:
|
||||
wp-gate.sh check {owner}/{repo} {index} [--since {ISO 時間}] 查 PR:合併就解鎖放行,沒合併就印出留言並擋住
|
||||
wp-gate.sh check-deps {owner}/{repo} {wp-number} 候選工作包能不能挑:核對它在分析頁上的相依工作包是否都已結清
|
||||
wp-gate.sh check-deps {owner}/{repo} {wp-number} --analyze {頁名} 候選工作包能不能挑:核對它在分析頁上的相依工作包是否都已結清
|
||||
wp-gate.sh claim {owner}/{repo} {wp-number} [--analyze {頁名}] 領包當下登錄歸屬
|
||||
wp-gate.sh lock {owner}/{repo} {index} [--wp {wp-number}] 開完 PR 後上鎖並把 PR 掛到工作包名下,讓閘門跨工作階段有效
|
||||
wp-gate.sh owns {owner}/{repo} {index} [--wp {wp-number}] 這支 PR 是不是自己這一包的:不是就擋,查無歸屬就放行
|
||||
@@ -281,8 +282,8 @@ case "$sub" in
|
||||
echo "$repo 第 $index 號 PR 還開著,沒有合併。這一包還沒結清。"
|
||||
fi
|
||||
echo '這一包沒結清,只表示相依於它的工作包不能開始;其餘互不相依的工作包能不能挑,見 wp-gate.sh check-deps。'
|
||||
echo '下列每一筆留言都要有結果(已修、不需修、修不動)。修不動或純討論、讚美的留言直接忽略:'
|
||||
echo '不在 PR 上回覆、也不因此停下流程,但要在最終回報裡逐筆列出被忽略的留言與理由。'
|
||||
echo '下列每一筆留言都要有結果(已修、不需修、修不動)。已處理的留言要用 gitea.sh comment-reply 回覆:'
|
||||
echo '純討論或讚美可以不回覆、也不因此停下流程,但要在最終回報裡逐筆列出被忽略的留言與理由。'
|
||||
if [ -n "$since" ]; then
|
||||
echo "留言(只列比 $since 更新的;更早的已經處理過):"
|
||||
else
|
||||
@@ -309,15 +310,27 @@ case "$sub" in
|
||||
repo="${1:-}"; wp_number="${2:-}"
|
||||
valid_repo "$repo" || { echo 'status=usage'; usage; exit 2; }
|
||||
valid_index "$wp_number" || { echo 'status=usage'; usage; exit 2; }
|
||||
[ "$#" -le 2 ] || { echo 'status=usage'; usage; exit 2; }
|
||||
shift 2
|
||||
analyze=''
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
--analyze) analyze="${2:-}"; [ -n "$analyze" ] || { echo 'status=usage'; usage; exit 2; }; shift 2 ;;
|
||||
--analyze=*) analyze=${1#--analyze=}; [ -n "$analyze" ] || { echo 'status=usage'; usage; exit 2; }; shift ;;
|
||||
*) echo 'status=usage'; usage; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
[ -n "$analyze" ] || {
|
||||
echo 'status=usage'
|
||||
echo '[jsc][工作包閘門][ERR]:缺少 --analyze ANALYZE_{HASH},check-deps 不會用存取庫 hash 猜分析頁。' >&2
|
||||
usage
|
||||
exit 2
|
||||
}
|
||||
|
||||
gitea=$(gitea_sh) || missing_dep "找不到 jsc-gitea 的 tools/gitea.sh。並排版面請確認 {workspace}/gitea 存在,已安裝版面請確認 jsc-gitea plugin 已安裝,或設定 JSC_GITEA_TOOLS 指向它的 tools 目錄。"
|
||||
|
||||
hash=$(sh "$gitea" hash-id "$repo" 2>/dev/null)
|
||||
[ -n "$hash" ] || missing_dep "算不出 $repo 的 wiki HASH。"
|
||||
wiki_repo=$(sh "$gitea" wiki-repo ANALYZE 2>/dev/null)
|
||||
[ -n "$wiki_repo" ] || missing_dep "解析不出 ANALYZE 頁的 wiki 存取庫(JSC_WIKI_REPO_ANALYZE 與 JSC_WIKI_REPO 都未設定)。"
|
||||
page="ANALYZE_${hash}"
|
||||
page="$analyze"
|
||||
content=$(sh "$gitea" wiki-get "$wiki_repo" "$page" 2>/dev/null)
|
||||
[ -n "$content" ] || missing_dep "讀不到分析頁 $wiki_repo 的 $page。"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user