feat: add daemon mode with configurable interval for continuous issue processing
This commit is contained in:
parent
6c06637164
commit
7953529cf2
|
@ -13,6 +13,7 @@ import dataclasses
|
|||
import tempfile
|
||||
import subprocess
|
||||
import os
|
||||
import time
|
||||
|
||||
import re
|
||||
from . import secrets
|
||||
|
@ -127,6 +128,8 @@ def parse_args():
|
|||
parser.add_argument("--owner", required=True, help="Owner of the repository")
|
||||
parser.add_argument("--repo", required=True, help="Repository name")
|
||||
parser.add_argument("--base-branch", default="main", help="Base branch to use for new branches (default: main)")
|
||||
parser.add_argument("--daemon", action="store_true", help="Run in daemon mode to continuously monitor for new issues")
|
||||
parser.add_argument("--interval", type=int, default=300, help="Interval in seconds between checks in daemon mode (default: 300)")
|
||||
return parser.parse_args()
|
||||
|
||||
def push_changes(cwd: Path, branch_name: str, issue_number: str, issue_title: str, issue_description: str, base_branch: str) -> None:
|
||||
|
@ -159,13 +162,8 @@ def process_issue(args, tmpdirname: Path, branch_name: str, issue_title: str, is
|
|||
run_cmd(["git", "add", "."], tmpdirname)
|
||||
push_changes(tmpdirname, branch_name, issue_number, issue_title, issue_description, args.base_branch)
|
||||
|
||||
def main():
|
||||
logging.basicConfig(level='INFO')
|
||||
args = parse_args()
|
||||
|
||||
seen_issues_db = SeenIssuesDB()
|
||||
client = GiteaClient(args.gitea_url, secrets.gitea_token())
|
||||
|
||||
def handle_issues(args, client, seen_issues_db):
|
||||
"""Process all open issues with the 'aider' label."""
|
||||
try:
|
||||
issues = client.get_issues(args.owner, args.repo)
|
||||
except Exception:
|
||||
|
@ -195,5 +193,26 @@ def main():
|
|||
|
||||
seen_issues_db.mark_as_seen(issue_text)
|
||||
|
||||
def main():
|
||||
logging.basicConfig(level='INFO')
|
||||
args = parse_args()
|
||||
|
||||
seen_issues_db = SeenIssuesDB()
|
||||
client = GiteaClient(args.gitea_url, secrets.gitea_token())
|
||||
|
||||
if args.daemon:
|
||||
logger.info(f"Starting daemon mode, checking for new issues every {args.interval} seconds")
|
||||
try:
|
||||
while True:
|
||||
logger.info("Checking for new issues...")
|
||||
handle_issues(args, client, seen_issues_db)
|
||||
logger.info(f"Sleeping for {args.interval} seconds...")
|
||||
time.sleep(args.interval)
|
||||
except KeyboardInterrupt:
|
||||
logger.info("Daemon stopped by user")
|
||||
else:
|
||||
# One-off run
|
||||
handle_issues(args, client, seen_issues_db)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
Loading…
Reference in New Issue
Block a user