43 lines
1.0 KiB
Python
Executable File
43 lines
1.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""Close a Gitea issue.
|
|
|
|
Usage:
|
|
close_issue.py <issue_number>
|
|
close_issue.py --remote prgs 12
|
|
"""
|
|
import sys
|
|
import argparse
|
|
|
|
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())
|