diff --git a/scripts/agent_poller.py b/scripts/agent_poller.py index b2e5595..a4367d1 100644 --- a/scripts/agent_poller.py +++ b/scripts/agent_poller.py @@ -188,6 +188,15 @@ def close_issue(num, body=None): return i +def reopen_issue(num, body=None): + """Reopen a closed issue, optionally with a reason comment.""" + if body: + comment_issue(num, f"## REOPEN\n\n{body}") + i = _req("PATCH", f"/issues/{num}", {"state": "open"}) + print(f"Issue #{num} reopened") + return i + + def _unblock_issues_blocked_by(closed_num): """Check issues blocked by *closed_num* and unblock if all blockers resolved. @@ -382,7 +391,8 @@ def main(): parser = argparse.ArgumentParser(description="Dev agent Gitea helper") parser.add_argument("--action", required=True, choices=["list", "get", "comment", "close-issue", - "create-issue", "create-pr", "pr-status", "merge-pr", "lifecycle", + "create-issue", "reopen-issue", + "create-pr", "pr-status", "merge-pr", "lifecycle", "blocked-check"]) parser.add_argument("--issue", type=int) parser.add_argument("--pr", type=int) @@ -420,6 +430,11 @@ def main(): print("--title is required for 'create-issue' action", file=sys.stderr) sys.exit(1) create_issue(args.title, args.body, args.labels) + elif args.action == "reopen-issue": + if not args.issue: + print("--issue is required for 'reopen-issue' action", file=sys.stderr) + sys.exit(1) + reopen_issue(args.issue, args.body) elif args.action == "create-pr": if not args.issue or not args.branch: print("--issue and --branch are required for 'create-pr' action", file=sys.stderr)