From f2532358415a667bf895c54276401cd173d2ef31 Mon Sep 17 00:00:00 2001 From: "Jon Michael Aanes (aider)" Date: Mon, 21 Apr 2025 16:19:00 +0200 Subject: [PATCH] feat: add handle_pr_comments to resolve and push PR review comments automatically --- aider_gitea/__init__.py | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/aider_gitea/__init__.py b/aider_gitea/__init__.py index 7da08c6..974d64c 100644 --- a/aider_gitea/__init__.py +++ b/aider_gitea/__init__.py @@ -521,6 +521,7 @@ def solve_issues_in_repository( handle_pr_comments( repository_config, issue_resolution.pull_request_id, + branch_name, Path(repository_path), client, seen_issues_db, @@ -537,3 +538,45 @@ def solve_issues_in_repository( issue_resolution.pull_request_id, issue_number, ) + +def handle_pr_comments( + repository_config, + pr_number, + branch_name, + repository_path, + client, + seen_issues_db, + issue_url, +): + """Fetch unresolved PR comments and resolve them via aider.""" + comments = client.get_pull_request_comments( + repository_config.owner, + repository_config.repo, + pr_number, + ) + for comment in comments: + path = comment.get('path') + line = comment.get('line') or comment.get('position') or 0 + file_path = repository_path / path + try: + lines = file_path.read_text().splitlines() + start = max(0, line - 3) + end = min(len(lines), line + 2) + context = '\n'.join(lines[start:end]) + except Exception: + context = '' + body = comment.get('body', '') + issue = ( + f"Resolve the following reviewer comment:\n{body}\n\n" + f"File: {path}\n\nContext:\n{context}" + ) + # invoke aider on the comment context + issue_solution_round(repository_path, issue) + # commit and push changes for this comment + run_cmd(['git', 'add', path], repository_path, check=False) + run_cmd( + ['git', 'commit', '-m', f"Resolve comment {comment.get('id')}"], + repository_path, + check=False, + ) + run_cmd(['git', 'push', 'origin', branch_name], repository_path, check=False)