#!/bin/sh
# validate-commit-message.sh — inti validasi pesan commit web-toko.
# Dipanggil oleh hooks/commit-msg dengan $1 = berkas pesan sementara
# (biasanya .git/COMMIT_EDITMSG). Aturan: Conventional Commits.

berkas_pesan="$1"
subjek="$(grep -v '^#' "$berkas_pesan" | sed '/^[[:space:]]*$/d' | head -n 1)"

pola='^(feat|fix|docs|chore|refactor|test)(\(.+\))?: .+'

if [ -z "$subjek" ]; then
  echo "commit-msg: pesan kosong — tulis subjek dengan format type(scope): deskripsi" >&2
  exit 1
fi

if ! printf '%s\n' "$subjek" | grep -qE "$pola"; then
  {
    echo "commit-msg: subjek ditolak: '$subjek'"
    echo "  format: type(scope): deskripsi — scope opsional"
    echo "  type: feat | fix | docs | chore | refactor | test"
    echo "  contoh: 'feat: tambah keranjang' atau 'fix(ui): benahi tombol bayar'"
  } >&2
  exit 1
fi

if [ "${#subjek}" -gt 72 ]; then
  echo "commit-msg: subjek ${#subjek} karakter — maksimal 72: '$subjek'" >&2
  exit 1
fi
