#!/bin/sh
set -e

MSG_FILE=$1

if [ ! -f "$MSG_FILE" ]; then
  printf '%s\n' '提交信息文件不存在。' >&2
  exit 1
fi

IFS= read -r FIRST_LINE < "$MSG_FILE" || FIRST_LINE=

case "$FIRST_LINE" in
  Merge*)
    exit 0
    ;;
esac

if ! printf '%s\n' "$FIRST_LINE" | grep -Eq '^(feat|fix|refactor|docs|style|test|chore): .+$'; then
  cat >&2 <<'EOF'
提交信息格式错误。

格式: <类型>: <简短描述>
类型: feat / fix / refactor / docs / style / test / chore

示例:
  feat: 添加供应商批量管理功能
  fix: 修复流式响应断连问题
  chore: 版本升迁 v0.2.0
EOF
  exit 1
fi

DESCRIPTION=${FIRST_LINE#*: }
if printf '%s\n' "$DESCRIPTION" | LC_ALL=C grep -Eq '^[ -~]+$'; then
  printf '%s\n' '提交描述需使用中文。' >&2
  exit 1
fi

if [ ${#FIRST_LINE} -gt 72 ]; then
  printf '%s\n' '警告: 提交信息首行超过 72 个字符，建议保持简短。' >&2
fi
