Skip to content

Commit 3bed616

Browse files
committed
Support repo-agnostic commenting from github bot.
1 parent 7e2330d commit 3bed616

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

app/github.py

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,44 +31,49 @@ def has_signature(comment: GithubComment, slug: str) -> bool:
3131
)
3232

3333

34-
def get_comments_link(pr_number: int) -> str:
35-
url = f"/repos/strawberry-graphql/strawberry/issues/{pr_number}/comments"
34+
def get_comments_link(pr_number: int, repo: typing.Optional[str] = None) -> str:
35+
url = f"/repos/strawberry-graphql/{repo or 'strawberry'}/issues/{pr_number}/comments"
3636

3737
return API_BASE + url
3838

3939

40-
def get_labels_link(pr_number: int) -> str:
41-
url = f"/repos/strawberry-graphql/strawberry/issues/{pr_number}/labels"
40+
def get_labels_link(pr_number: int, repo: typing.Optional[str] = None) -> str:
41+
url = f"/repos/strawberry-graphql/{repo or 'strawberry'}/issues/{pr_number}/labels"
4242

4343
return API_BASE + url
4444

4545

46-
def get_comments(pr_number: int) -> typing.List[GithubComment]:
47-
comments_link = get_comments_link(pr_number)
46+
def get_comments(pr_number: int, repo: typing.Optional[str] = None) -> typing.List[GithubComment]:
47+
comments_link = get_comments_link(pr_number, repo=repo)
4848

4949
response = httpx.get(comments_link)
5050

5151
return response.json()
5252

5353

54-
def get_labels(pr_number) -> typing.List[GithubLabel]:
55-
labels_link = get_labels_link(pr_number)
54+
def get_labels(pr_number:int, repo: typing.Optional[str] = None) -> typing.List[GithubLabel]:
55+
labels_link = get_labels_link(pr_number, repo=repo)
5656

5757
response = httpx.get(labels_link)
5858

5959
return response.json()
6060

6161

62-
def add_or_edit_comment(pr_number: int, comment_template: str, slug: str):
63-
current_comments = get_comments(pr_number)
62+
def add_or_edit_comment(
63+
pr_number: int,
64+
comment_template: str,
65+
slug: str,
66+
repo: typing.Optional[str] = None
67+
):
68+
current_comments = get_comments(pr_number, repo=repo)
6469

6570
previous_comment = next(
6671
(comment for comment in current_comments if has_signature(comment, slug)),
6772
None,
6873
)
6974

7075
method = httpx.patch if previous_comment else httpx.post
71-
url = previous_comment["url"] if previous_comment else get_comments_link(pr_number)
76+
url = previous_comment["url"] if previous_comment else get_comments_link(pr_number, repo=repo)
7277

7378
response = method(
7479
url,
@@ -79,7 +84,11 @@ def add_or_edit_comment(pr_number: int, comment_template: str, slug: str):
7984
response.raise_for_status()
8085

8186

82-
def update_labels(pr_number: int, release_info: typing.Optional[ReleaseInfo]):
87+
def update_labels(
88+
pr_number: int,
89+
release_info: typing.Optional[ReleaseInfo],
90+
repo: str | None = None
91+
):
8392
labels_to_add = {"bot:has-release-file"}
8493
labels_to_remove: typing.Set[str] = set()
8594

@@ -92,10 +101,10 @@ def update_labels(pr_number: int, release_info: typing.Optional[ReleaseInfo]):
92101
new_release_label = f"bot:release-type-{release_info.change_type.value}"
93102
labels_to_add.add(new_release_label)
94103

95-
labels_url = get_labels_link(pr_number)
104+
labels_url = get_labels_link(pr_number, repo=repo)
96105

97106
current_labels_url_by_name = {
98-
label["name"]: label["url"] for label in get_labels(pr_number)
107+
label["name"]: label["url"] for label in get_labels(pr_number, repo=repo)
99108
}
100109

101110
current_labels = set(current_labels_url_by_name.keys())

app/schema.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@ class AddReleaseFileCommentInput:
3434
release_info: Optional[ReleaseInfo] = None
3535
release_card_url: Optional[str] = None
3636
tweet: Optional[str] = None
37+
repo: Optional[str] = None
3738

3839

3940
@strawberry.input
4041
class AddOkToPreviewCommentInput:
4142
pr_number: int
4243
paths: List[str]
44+
repo: Optional[str] = None
4345

4446

4547
@strawberry.type
@@ -57,7 +59,7 @@ def add_ok_to_preview_comment(self, input: AddOkToPreviewCommentInput) -> str:
5759

5860
comment = OK_TO_PREVIEW.format(links=links)
5961

60-
add_or_edit_comment(input.pr_number, comment, slug="ok-to-preview")
62+
add_or_edit_comment(input.pr_number, comment, slug="ok-to-preview", repo=input.repo)
6163

6264
return "ok"
6365

@@ -85,8 +87,8 @@ def add_release_file_comment(self, input: AddReleaseFileCommentInput) -> str:
8587
if input.tweet:
8688
comment += f"\n\nHere's the tweet text: \n```\n{input.tweet}\n```\n"
8789

88-
add_or_edit_comment(input.pr_number, comment, slug="release-file")
89-
update_labels(input.pr_number, input.release_info)
90+
add_or_edit_comment(input.pr_number, comment, slug="release-file", repo=input.repo)
91+
update_labels(input.pr_number, input.release_info, repo=input.repo)
9092

9193
return "ok"
9294

0 commit comments

Comments
 (0)