Skip to content

Commit 77079b8

Browse files
authored
Remove automerge label if not added by core dev (#253)
This also adds the "Automerge-triggered-by: @{coredev}" message at the end of the PR body. Closes python/core-workflow#340
1 parent bd358d0 commit 77079b8

File tree

3 files changed

+238
-15
lines changed

3 files changed

+238
-15
lines changed

miss_islington/status_change.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ async def check_status(event, gh, *args, **kwargs):
4141
async def pr_reviewed(event, gh, *args, **kwargs):
4242

4343
pr_labels = event.data["pull_request"]["labels"]
44+
sender = event.data["sender"]["login"]
45+
label = event.data["label"]["name"]
46+
47+
if label == util.AUTOMERGE_LABEL:
48+
if await util.is_core_dev(gh, sender):
49+
await add_automerged_by(gh, event.data["pull_request"], sender)
50+
else:
51+
await util.remove_automerge(gh, event.data["pull_request"])
52+
return
4453

4554
if util.pr_is_automerge(pr_labels) and util.pr_is_awaiting_merge(pr_labels):
4655
sha = event.data["pull_request"]["head"]["sha"]
@@ -132,3 +141,9 @@ async def merge_pr(gh, pr, sha, is_automerge=False):
132141
gh, pr_number, f"Sorry, I can't merge this PR. Reason: `{err}`."
133142
)
134143
break
144+
145+
146+
async def add_automerged_by(gh, pr_data, username):
147+
148+
new_pr_body = f"{pr_data['body']}\n\nAutomerge-Triggered-By: @{username}"
149+
await gh.patch(pr_data["url"], data={"body": new_pr_body})

miss_islington/util.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,3 +145,11 @@ async def get_pr_for_commit(gh, sha):
145145
pr_for_commit = prs_for_commit["items"][0]
146146
return pr_for_commit
147147
return None
148+
149+
150+
async def remove_automerge(gh, pr_data):
151+
"""Remove the automerge label"""
152+
await gh.delete(
153+
f"{pr_data['issue_url']}/labels/{AUTOMERGE_LABEL}",
154+
accept="application/vnd.github.symmetra-preview+json",
155+
)

0 commit comments

Comments
 (0)