#!/usr/bin/env bash
# pre-commit hook：检测到核心业务文件改动时自动跑核心业务测试。
# 安装方法：./scripts/install-hooks.sh

set -e

REPO_ROOT="$(git rev-parse --show-toplevel)"
cd "$REPO_ROOT"

# 1) 拿到本次 commit 要包含的改动文件（已 staged）
STAGED=$(git diff --cached --name-only --diff-filter=ACMR)

if [ -z "$STAGED" ]; then
  exit 0
fi

# 2) 检查是否涉及核心业务文件
CORE_PATTERN='(^|/)book-generator(/|$)|book-generator-api\.ts$|schema\.prisma$'
CORE_HIT=$(echo "$STAGED" | grep -E "$CORE_PATTERN" || true)

if [ -z "$CORE_HIT" ]; then
  echo "[pre-commit] 未检测到核心业务改动（$STAGED），跳过核心业务测试。"
  exit 0
fi

echo "[pre-commit] 检测到核心业务改动："
echo "$CORE_HIT" | sed 's/^/  - /'
echo

# 3) 跑核心业务测试（best-effort：服务已起就直接跑，否则自动启）
if [ -x "./scripts/run-core-business-test.sh" ]; then
  ./scripts/run-core-business-test.sh
else
  echo "[pre-commit] 缺少 ./scripts/run-core-business-test.sh，跳过测试。"
  echo "           请阅读 CONTRIBUTING.md 后再提交。"
  exit 1
fi