publish_persistent_comment

This commit is contained in:
mrT23
2023-11-09 15:20:31 +02:00
parent 755e04cf65
commit 7e5889061c
5 changed files with 27 additions and 11 deletions

View File

@ -154,12 +154,17 @@ class BitbucketProvider(GitProvider):
return diff_files
def publish_persistent_review(self, pr_comment: str):
def publish_persistent_comment(self, pr_comment: str,
initial_text="## PR Analysis",
updated_text="## PR Analysis (updated)"):
try:
for comment in self.pr.comments():
body = comment.raw
if '## PR Analysis' in body:
pr_comment_updated = pr_comment.replace('## PR Analysis\n', '## PR Analysis (updated)\n')
if initial_text in body:
if updated_text:
pr_comment_updated = pr_comment.replace(initial_text, updated_text)
else:
pr_comment_updated = pr_comment
d = {"content": {"raw": pr_comment_updated}}
response = comment._update_data(comment.put(None, data=d))
return

View File

@ -44,7 +44,7 @@ class GitProvider(ABC):
def publish_comment(self, pr_comment: str, is_temporary: bool = False):
pass
def publish_persistent_review(self, pr_comment: str):
def publish_persistent_comment(self, pr_comment: str):
self.publish_comment(pr_comment)
@abstractmethod

View File

@ -154,11 +154,17 @@ class GithubProvider(GitProvider):
def publish_description(self, pr_title: str, pr_body: str):
self.pr.edit(title=pr_title, body=pr_body)
def publish_persistent_review(self, pr_comment: str):
def publish_persistent_comment(self, pr_comment: str,
initial_text="## PR Analysis",
updated_text="## PR Analysis (updated)"):
prev_comments = list(self.pr.get_issue_comments())
for comment in prev_comments:
if comment.body.startswith('## PR Analysis'):
pr_comment_updated = pr_comment.replace('## PR Analysis\n', '## PR Analysis (updated)\n')
body = comment.body
if body.startswith(initial_text):
if updated_text:
pr_comment_updated = pr_comment.replace(initial_text, updated_text)
else:
pr_comment_updated = pr_comment
response = comment.edit(pr_comment_updated)
return
self.publish_comment(pr_comment)

View File

@ -136,11 +136,16 @@ class GitLabProvider(GitProvider):
except Exception as e:
get_logger().exception(f"Could not update merge request {self.id_mr} description: {e}")
def publish_persistent_review(self, pr_comment: str):
def publish_persistent_comment(self, pr_comment: str,
initial_text="## PR Analysis",
updated_text="## PR Analysis (updated)"):
try:
for comment in self.mr.notes.list(get_all=True)[::-1]:
if comment.body.startswith('## PR Analysis'):
pr_comment_updated = pr_comment.replace('## PR Analysis\n', '## PR Analysis (updated)\n')
if comment.body.startswith(initial_text):
if updated_text:
pr_comment_updated = pr_comment.replace(initial_text, updated_text)
else:
pr_comment_updated = pr_comment
response = self.mr.notes.update(comment.id, {'body': pr_comment_updated})
return
except Exception as e:

View File

@ -120,7 +120,7 @@ class PRReviewer:
# publish the review
if get_settings().pr_reviewer.persistent_comment and not self.incremental.is_incremental:
self.git_provider.publish_persistent_review(pr_comment)
self.git_provider.publish_persistent_comment(pr_comment)
else:
self.git_provider.publish_comment(pr_comment)