feat: close issues

This commit is contained in:
蔡雨翔524370910013 2025-09-19 19:41:40 +08:00
parent 0e37b5d444
commit a2d636f64e

View File

@ -479,6 +479,35 @@ class Gitea:
self.org_name, repo_name, issue.number, body={"state": "closed"} self.org_name, repo_name, issue.number, body={"state": "closed"}
) )
def close_issues(self, repo_name: str, issue_numbers: List[int], dry_run: bool = True) -> None:
if not issue_numbers:
logger.warning("No issue numbers provided to close")
return
if dry_run:
logger.info("Dry run enabled. No changes will be made to issues.")
try:
issues = {issue.number: issue for issue in list_all(self.issue_api.issue_list_issues, self.org_name, repo_name)}
except ApiException as e:
logger.error(f"Failed to list issues for {repo_name}: {e}")
return
for num in issue_numbers:
issue = issues.get(num)
if issue is None:
logger.warning(f"Issue #{num} not found in {repo_name}")
continue
if getattr(issue, "state", "") == "closed":
logger.info(f"Issue #{num} in {repo_name} already closed")
continue
try:
if dry_run:
logger.info(f"Would close issue #{num} in {repo_name} (dry run)")
continue
self.issue_api.issue_edit_issue(self.org_name, repo_name, num, body={"state": "closed"})
logger.info(f"Closed issue #{num} in {repo_name}")
except ApiException as e:
logger.error(f"Failed to close issue #{num} in {repo_name}: {e}")
def archive_repos(self, regex: str = ".+", dry_run: bool = True) -> None: def archive_repos(self, regex: str = ".+", dry_run: bool = True) -> None:
if dry_run: if dry_run:
logger.info("Dry run enabled. No changes will be made to the repositories.") logger.info("Dry run enabled. No changes will be made to the repositories.")