#!/usr/bin/env -S uv run python

from __future__ import annotations

__VERSION__ = "1"

import os
import sys

import pygit2

from pygittools.hooks import HookResult, parse_ref_updates
from pygittools.hooks_patterns import PreReceiveProtectedPattern

PROTECTED_REF_PATTERN = os.environ.get("PYGITWEB_PROTECTED_REF_PATTERN", r"^refs/heads/(main|master)$")
COMMIT_MSG_PATTERN = os.environ.get("PYGITWEB_COMMIT_MSG_PATTERN", r"^(\S+): (.+)")
REJECT_MERGE_COMMITS = os.environ.get("PYGITWEB_REJECT_MERGE_COMMITS", "").lower() in {
	"1",
	"true",
	"yes",
}


def main() -> int:
	repo = pygit2.Repository(".")
	updates = parse_ref_updates(sys.stdin)
	result = PreReceiveProtectedPattern(
		repo,
		PROTECTED_REF_PATTERN,
		COMMIT_MSG_PATTERN,
		reject_merge_commits=REJECT_MERGE_COMMITS,
	).run(updates)
	return int(result.value)


if __name__ == "__main__":
	raise SystemExit(main())