Skip to content

Commit 2565db8

Browse files
authored
Merge pull request #5 from mattalbr/main
Support repo-agnostic commenting from github bot.
2 parents 7e2330d + 432473c commit 2565db8

File tree

2 files changed

+37
-17
lines changed

2 files changed

+37
-17
lines changed

app/github.py

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,44 +31,56 @@ 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 = (
36+
f"/repos/strawberry-graphql/{repo or 'strawberry'}/issues/{pr_number}/comments"
37+
)
3638

3739
return API_BASE + url
3840

3941

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

4345
return API_BASE + url
4446

4547

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

4953
response = httpx.get(comments_link)
5054

5155
return response.json()
5256

5357

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

5763
response = httpx.get(labels_link)
5864

5965
return response.json()
6066

6167

62-
def add_or_edit_comment(pr_number: int, comment_template: str, slug: str):
63-
current_comments = get_comments(pr_number)
68+
def add_or_edit_comment(
69+
pr_number: int, comment_template: str, slug: str, repo: typing.Optional[str] = None
70+
):
71+
current_comments = get_comments(pr_number, repo=repo)
6472

6573
previous_comment = next(
6674
(comment for comment in current_comments if has_signature(comment, slug)),
6775
None,
6876
)
6977

7078
method = httpx.patch if previous_comment else httpx.post
71-
url = previous_comment["url"] if previous_comment else get_comments_link(pr_number)
79+
url = (
80+
previous_comment["url"]
81+
if previous_comment
82+
else get_comments_link(pr_number, repo=repo)
83+
)
7284

7385
response = method(
7486
url,
@@ -79,7 +91,9 @@ def add_or_edit_comment(pr_number: int, comment_template: str, slug: str):
7991
response.raise_for_status()
8092

8193

82-
def update_labels(pr_number: int, release_info: typing.Optional[ReleaseInfo]):
94+
def update_labels(
95+
pr_number: int, release_info: typing.Optional[ReleaseInfo], repo: str | None = None
96+
):
8397
labels_to_add = {"bot:has-release-file"}
8498
labels_to_remove: typing.Set[str] = set()
8599

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

95-
labels_url = get_labels_link(pr_number)
109+
labels_url = get_labels_link(pr_number, repo=repo)
96110

97111
current_labels_url_by_name = {
98-
label["name"]: label["url"] for label in get_labels(pr_number)
112+
label["name"]: label["url"] for label in get_labels(pr_number, repo=repo)
99113
}
100114

101115
current_labels = set(current_labels_url_by_name.keys())

app/schema.py

Lines changed: 9 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,9 @@ 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(
63+
input.pr_number, comment, slug="ok-to-preview", repo=input.repo
64+
)
6165

6266
return "ok"
6367

@@ -85,8 +89,10 @@ def add_release_file_comment(self, input: AddReleaseFileCommentInput) -> str:
8589
if input.tweet:
8690
comment += f"\n\nHere's the tweet text: \n```\n{input.tweet}\n```\n"
8791

88-
add_or_edit_comment(input.pr_number, comment, slug="release-file")
89-
update_labels(input.pr_number, input.release_info)
92+
add_or_edit_comment(
93+
input.pr_number, comment, slug="release-file", repo=input.repo
94+
)
95+
update_labels(input.pr_number, input.release_info, repo=input.repo)
9096

9197
return "ok"
9298

0 commit comments

Comments
 (0)