#!/usr/bin/env py
"""
Commit Message Hook: Conventional Commits Validation
Format: <type>(<scope>): <subject>

Types: feat, fix, docs, style, refactor, test, chore
"""
import sys
import re

COMMIT_MSG_PATTERN = r"^(feat|fix|docs|style|refactor|test|chore)(\(.+\))?: .{1,100}"

def main():
    commit_msg_file = sys.argv[1]

    with open(commit_msg_file, "r") as f:
        commit_msg = f.read().strip()

    # Skip merge commits
    if commit_msg.startswith("Merge"):
        return 0

    if not re.match(COMMIT_MSG_PATTERN, commit_msg):
        print("❌ Invalid commit message format")
        print("\nExpected format:")
        print("  <type>(<scope>): <subject>")
        print("\nValid types:")
        print("  feat, fix, docs, style, refactor, test, chore")
        print("\nExamples:")
        print("  feat(validator): add pyproject.toml validation")
        print("  fix(parser): handle empty requirements.txt")
        print("  docs: update README with installation steps")
        return 1

    return 0

if __name__ == "__main__":
    sys.exit(main())
