# Branch naming convention validation (repo-wide).
echo "🔍 Validating branch name..."

branch_name=$(git rev-parse --abbrev-ref HEAD)

# Skip validation for protected branches
if [[ "$branch_name" == "main" || "$branch_name" == "develop" || "$branch_name" == "master" || "$branch_name" == "dev" ]]; then
    echo "✅ Protected branch — skipping validation"
    exit 0
fi

# Format: <type>/<ticket-id>-<description> or <type>/<description>
# Types match Conventional Commits prefixes used in CONTRIBUTING.md.
branch_regex="^(feat|fix|chore|docs|refactor|test|perf)\/[a-zA-Z0-9]+([a-zA-Z0-9\-]*[a-zA-Z0-9])?$"

if [[ ! $branch_name =~ $branch_regex ]]; then
    echo "❌ Invalid branch name: '$branch_name'"
    echo ""
    echo "Branch name must follow the pattern: <type>/<ticket-id>-<description>"
    echo ""
    echo "Valid types: feat, fix, chore, docs, refactor, test, perf"
    echo ""
    echo "✅ Valid examples:"
    echo "  - feat/AUTH-123-user-login"
    echo "  - fix/UI-456-button-alignment"
    echo "  - refactor/cleanup-utils"
    echo "  - docs/update-readme"
    echo "  - perf/PERF-500-list-pagination"
    echo ""
    echo "See BRANCH_NAMING_CONVENTION.md for full guidelines."
    exit 1
fi

echo "✅ Branch name '$branch_name' is valid"
