#!/usr/bin/env sh
# GSDLC Quality Harness — Pre-commit Hook テンプレート
#
# Managed by phasegate install / ci:generate-template.
# Requires phasegate to be available through package.json devDependencies or npx.
#
# 実行内容:
#   L1: Biome AST ルール（require-unit-comment, no-layer-violation など 8ルール）
#   L2: Pre-commit バリデータ（phase-gate / metadata / test-quality）
#
# ⚠️  Quick Mode の場合は HARNESS_QUICK_MODE=1 を設定してコミットする:
#   HARNESS_QUICK_MODE=1 git commit -m "fix: ..."

. "$(dirname -- "$0")/_/husky.sh"

PHASEGATE_CMD="${PHASEGATE_CMD:-npx phasegate}"

echo "🔍 AIDLC Quality Gate (Pre-commit)"
echo "──────────────────────────────────"

# -----------------------------------------------------------------------
# L1: Biome AST ルール
# -----------------------------------------------------------------------
echo "▶ L1 Lint (Biome AST)..."
$PHASEGATE_CMD lint
L1_EXIT=$?

if [ $L1_EXIT -ne 0 ]; then
  echo ""
  echo "❌ L1 Lint が失敗しました。"
  echo "   修正してから再度コミットしてください。"
  echo "   詳細: npx phasegate lint"
  exit 1
fi
echo "✅ L1 Lint: passed"

# -----------------------------------------------------------------------
# L2: Pre-commit バリデータ
# -----------------------------------------------------------------------
# Quick Mode では phase-gate をスキップ
if [ "${HARNESS_QUICK_MODE:-0}" = "1" ]; then
  echo "▶ L2 Validators (Quick Mode: phase-gate スキップ)..."
  $PHASEGATE_CMD validate --layer L2 --format human --no-l4
else
  echo "▶ L2 Validators (phase-gate / metadata / test-quality)..."
  $PHASEGATE_CMD validate --layer L2 --format human
fi
L2_EXIT=$?

if [ $L2_EXIT -ne 0 ]; then
  echo ""
  echo "❌ L2 Validators が失敗しました。"
  echo "   修正してから再度コミットしてください。"
  echo "   詳細: npx phasegate validate --layer L2 --format human"
  exit 1
fi
echo "✅ L2 Validators: passed"

echo "──────────────────────────────────"
echo "✅ AIDLC Quality Gate: passed"
