#!/usr/bin/env python3
"""Close a Gitea issue.

Usage:
    close_issue.py <issue_number>
    close_issue.py --remote prgs 12
"""
import os
import sys
import argparse

# Auto-execute using the project's local virtual environment Python
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
venv_python = os.path.join(PROJECT_ROOT, "venv", "bin", "python3")
if os.path.exists(venv_python) and sys.executable != venv_python:
    os.execv(venv_python, [venv_python] + sys.argv)

from gitea_auth import (
    get_auth_header, resolve_remote, add_remote_args,
    api_request, repo_api_url,
)


def main(argv=None):
    parser = argparse.ArgumentParser(description="Close a Gitea issue.")
    add_remote_args(parser)
    parser.add_argument("issue_number", type=int, help="Issue number to close.")
    args = parser.parse_args(argv)

    host, org, repo = resolve_remote(args)

    auth = get_auth_header(host)
    if not auth:
        print(f"Could not get credentials or token for {host}.", file=sys.stderr)
        return 1

    url = f"{repo_api_url(host, org, repo)}/issues/{args.issue_number}"

    try:
        api_request("PATCH", url, auth, {"state": "closed"})
        print(f"#{args.issue_number} closed")
        return 0
    except RuntimeError as e:
        print(f"Error: {e}", file=sys.stderr)
        return 1


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