#!/bin/sh # prepare-commit-msg hook for ULFlow Golang Starter Kit # This hook prepares the commit message template COMMIT_MSG_FILE=$1 COMMIT_SOURCE=$2 SHA1=$3 # Only add template if this is not a merge, amend, or rebase if [ -z "$COMMIT_SOURCE" ]; then # Check the current branch name to suggest commit type BRANCH_NAME=$(git symbolic-ref --short HEAD) # Extract type from branch name (e.g., feat/123-user-auth -> feat) BRANCH_TYPE=$(echo $BRANCH_NAME | cut -d '/' -f 1) # If branch follows naming convention, prepopulate commit message if [[ "$BRANCH_TYPE" =~ ^(feat|fix|docs|style|refactor|test|chore)$ ]]; then # Get the first line of the current commit message first_line=$(head -n 1 $COMMIT_MSG_FILE) # If the first line doesn't already have the type, prepend it if [[ ! "$first_line" =~ ^$BRANCH_TYPE ]]; then # Read existing commit msg commit_msg=$(cat $COMMIT_MSG_FILE) # Create new commit msg with suggested type echo "$BRANCH_TYPE: " > $COMMIT_MSG_FILE echo "$commit_msg" >> $COMMIT_MSG_FILE fi fi fi exit 0