#!/usr/bin/env bash
set -euo pipefail

COMMIT_MSG_FILE="$1"
COMMIT_SOURCE="$2"
SHA1="$3"

# Only auto-prepend for regular commits (not merges, rebases, etc.)
if [ "$COMMIT_SOURCE" = "message" ] || [ "$COMMIT_SOURCE" = "template" ] || [ "$COMMIT_SOURCE" = "" ]; then
    BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "")

    # Extract type from branch name (feature/xxx -> feat, fix/xxx -> fix)
    case "$BRANCH" in
        feature/*) PREFIX="feat" ;;
        fix/*)     PREFIX="fix" ;;
        chore/*)   PREFIX="chore" ;;
        hotfix/*)  PREFIX="fix" ;;
        release/*) PREFIX="chore" ;;
        docs/*)    PREFIX="docs" ;;
        *)         PREFIX="" ;;
    esac

    if [ -n "$PREFIX" ] && [ ! -s "$COMMIT_MSG_FILE" ]; then
        # Extract scope from branch name after prefix: feature/user-auth -> user-auth
        SCOPE=$(echo "$BRANCH" | sed 's/^[^/]*\///' | sed 's/\/.*//')
        echo "${PREFIX}(${SCOPE}): " > "$COMMIT_MSG_FILE"
    fi
fi
