diff --git a/README.md b/README.md index a9bbed25..5c3b5346 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ CodiumAI `PR-Agent` is an open-source tool aiming to help developers review pull | | Reflect and Review | :white_check_mark: | | | | | | | | | | USAGE | CLI | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| | Tagging bot | :white_check_mark: | :white_check_mark: | | +| | Tagging bot | :white_check_mark: | | | | | Actions | :white_check_mark: | | | | | | | | | | CORE | PR compression | :white_check_mark: | :white_check_mark: | :white_check_mark: | diff --git a/pr_agent/servers/gitlab_polling.py b/pr_agent/servers/gitlab_polling.py deleted file mode 100644 index c240310e..00000000 --- a/pr_agent/servers/gitlab_polling.py +++ /dev/null @@ -1,64 +0,0 @@ -import asyncio -import time - -import gitlab - -from pr_agent.agent.pr_agent import PRAgent -from pr_agent.config_loader import settings - -gl = gitlab.Gitlab( - settings.get("GITLAB.URL"), - private_token=settings.get("GITLAB.PERSONAL_ACCESS_TOKEN") -) - -# Set the list of projects to monitor -projects_to_monitor = settings.get("GITLAB.PROJECTS_TO_MONITOR") -magic_word = settings.get("GITLAB.MAGIC_WORD") - -# Hold the previous seen comments -previous_comments = set() - - -def check_comments(): - print('Polling') - new_comments = {} - for project in projects_to_monitor: - project = gl.projects.get(project) - merge_requests = project.mergerequests.list(state='opened') - for mr in merge_requests: - notes = mr.notes.list(get_all=True) - for note in notes: - if note.id not in previous_comments and note.body.startswith(magic_word): - new_comments[note.id] = dict( - body=note.body[len(magic_word):], - project=project.name, - mr=mr - ) - previous_comments.add(note.id) - print(f"New comment in project {project.name}, merge request {mr.title}: {note.body}") - - return new_comments - - -def handle_new_comments(new_comments): - print('Handling new comments') - agent = PRAgent() - for _, comment in new_comments.items(): - print(f"Handling comment: {comment['body']}") - asyncio.run(agent.handle_request(comment['mr'].web_url, comment['body'])) - - -def run(): - assert settings.get('CONFIG.GIT_PROVIDER') == 'gitlab', 'This script is only for GitLab' - # Initial run to populate previous_comments - check_comments() - - # Run the check every minute - while True: - time.sleep(settings.get("GITLAB.POLLING_INTERVAL_SECONDS")) - new_comments = check_comments() - if new_comments: - handle_new_comments(new_comments) - -if __name__ == '__main__': - run()