"""Repository discovery for the pgt TUI."""

from __future__ import annotations

from pathlib import Path

from pygit2 import GitError, Repository, discover_repository

from pygittools.tui.types import PageContext


def open_page_context(start: Path | None = None) -> PageContext:
    """Discover a git repository from ``start`` (or the current directory)."""
    root = (start or Path.cwd()).resolve()
    discovered = discover_repository(str(root))
    if discovered is None:
        raise GitError(f"No git repository found under {root}")
    repo_path = Path(discovered)
    return PageContext(repo=Repository(str(repo_path)), repo_path=repo_path)


def try_open_page_context(start: Path | None = None) -> PageContext | None:
    try:
        return open_page_context(start)
    except GitError:
        return None