#!/bin/bash
# commit-msg hook — enforces Hard Rule #18: every commit must include [B24:<task-id>]
# Bypass: ALLOW_NO_B24=1 git commit -m "..."  (chỉ dùng cho infra/scaffold trước khi có TASK_ID)

set -e

MSG_FILE="$1"
MSG=$(cat "$MSG_FILE")

# Skip merge / revert / fixup auto-messages
case "$MSG" in
  Merge\ *|Revert\ *|fixup!\ *|squash!\ *|amend!\ *) exit 0 ;;
esac

# Allow explicit bypass via env var (logs to stderr)
if [[ "${ALLOW_NO_B24:-0}" == "1" ]]; then
  echo "[commit-msg] ALLOW_NO_B24=1 — skipping [B24:nnn] check" >&2
  exit 0
fi

# Match [B24:123] anywhere in message (subject or body)
if echo "$MSG" | grep -qE '\[B24:[0-9]+\]'; then
  exit 0
fi

cat >&2 <<EOF

❌ Hard Rule #18 violation: commit message thiếu [B24:<task-id>]

Format yêu cầu:
  feat: mô tả ngắn [B24:12345]
  fix: bug X [B24:12345]

Cách fix:
  1. Đọc TASK_ID từ CLAUDE.md (root hoặc feature folder)
  2. Sửa commit message hiện tại bằng:
       git commit --amend
  3. Hoặc bypass tạm thời (chỉ cho infra/scaffold):
       ALLOW_NO_B24=1 git commit -m "..."

Setup chi tiết: docs/bitrix-task-sync.md
EOF

exit 1
