#!/usr/bin/env bash # milestone-due-guard.sh — 建 milestone 一定要有真的期限(leo 2026-08-21 立) # # leo 原話:「**以後所有的 milestone 限制時間**」 # 「**你根本沒有時間概念,浪費一整天**」 # # 🔴 為什麼連 9999 也要擋:立這條的當下實查七個 open milestone, # 六個的期限是 `9999-01-01`——那是「沒有期限」穿了一件期限的衣服, # 比空白更糟,因為它讓盤點時看起來每一格都有值。 set -uo pipefail INPUT=$(cat) CMD=$(printf '%s' "$INPUT" | python3 -c "import json,sys;print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null || echo "") [ -z "$CMD" ] && exit 0 # 只管「建 milestone」這個動作 printf '%s' "$CMD" | grep -qE 'milestones' || exit 0 printf '%s' "$CMD" | grep -qE '\-X *POST|--request *POST' || exit 0 DUE=$(printf '%s' "$CMD" | grep -oE '"due_on"[^,}]*' | head -1) BAD="" [ -z "$DUE" ] && BAD="沒有 due_on" printf '%s' "$DUE" | grep -q '9999' && BAD="due_on 是 9999(等於沒有期限)" [ -z "$BAD" ] && exit 0 cat >&2 <