32 lines
928 B
Bash
32 lines
928 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
MSG_FILE="${1}"
|
|
FIRST_LINE="$(head -n 1 "$MSG_FILE" | tr -d '\r')"
|
|
|
|
# Autoriser commits auto-générés par git
|
|
if [[ "$FIRST_LINE" =~ ^Merge\ ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
# Types autorisés (MINUSCULES uniquement)
|
|
# Optionnel: scope => feat(auth) : ...
|
|
REGEX='^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test|wip)(\([a-z0-9._-]+\))?\ :\ .+'
|
|
|
|
if [[ ! "$FIRST_LINE" =~ $REGEX ]]; then
|
|
echo "❌ Message de commit invalide."
|
|
echo ""
|
|
echo "➡️ Format attendu : <type>(<scope optionnel>) : <message>"
|
|
echo "➡️ Types autorisés (minuscules uniquement) :"
|
|
echo " build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test"
|
|
echo ""
|
|
echo "✅ Exemples :"
|
|
echo " feat : add login page"
|
|
echo " fix(auth) : prevent null token crash"
|
|
echo " docs : update README"
|
|
echo ""
|
|
echo "❌ Exemple refusé :"
|
|
echo " Feat : add login page"
|
|
exit 1
|
|
fi
|