feat: new commands in mm channels and gitea issues #6
|
|
@ -479,6 +479,35 @@ class Gitea:
|
|||
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:
|
||||
if dry_run:
|
||||
logger.info("Dry run enabled. No changes will be made to the repositories.")
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user