mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-07 14:20:37 +08:00
Temporarily remove gitlab polling server until a rewrite is ready
This commit is contained in:
@ -83,7 +83,7 @@ CodiumAI `PR-Agent` is an open-source tool aiming to help developers review pull
|
|||||||
| | Reflect and Review | :white_check_mark: | | |
|
| | Reflect and Review | :white_check_mark: | | |
|
||||||
| | | | | |
|
| | | | | |
|
||||||
| USAGE | CLI | :white_check_mark: | :white_check_mark: | :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: | | |
|
| | Actions | :white_check_mark: | | |
|
||||||
| | | | | |
|
| | | | | |
|
||||||
| CORE | PR compression | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
| CORE | PR compression | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||||
|
@ -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()
|
|
Reference in New Issue
Block a user