Compare commits

...

2 commits

View file

@ -158,6 +158,7 @@ def maintain(config_path: Path, schedule: timedelta):
client = Client(config["gh-unnotifier"]["api_key"]) client = Client(config["gh-unnotifier"]["api_key"])
org_shitlist = config["gh-unnotifier"].get("org_shitlist", []) org_shitlist = config["gh-unnotifier"].get("org_shitlist", [])
team_shitlist = config["gh-unnotifier"].get("team_shitlist", []) team_shitlist = config["gh-unnotifier"].get("team_shitlist", [])
author_shitlist = config["gh-unnotifier"].get("author_shitlist", [])
user = client.get_user() user = client.get_user()
user_teams = {it["slug"] for it in client.get_user_teams()} user_teams = {it["slug"] for it in client.get_user_teams()}
mark = savepoint = prev = None mark = savepoint = prev = None
@ -178,6 +179,10 @@ def maintain(config_path: Path, schedule: timedelta):
_resolve(notif, "Closed") _resolve(notif, "Closed")
return return
if pr["user"]["login"] in author_shitlist:
_resolve(notif, "Ignoring PR by author")
return
if notif["reason"] == "review_requested": if notif["reason"] == "review_requested":
reviewers = client.get_pr_reviewers(pr) reviewers = client.get_pr_reviewers(pr)
if ( if (
@ -219,6 +224,7 @@ def maintain(config_path: Path, schedule: timedelta):
def _issue(subject, notif): def _issue(subject, notif):
issue = client.get_issue(url=subject["url"]) issue = client.get_issue(url=subject["url"])
if issue["state"] == "closed": if issue["state"] == "closed":
comments = client.get_comments(url=issue["comments_url"]) comments = client.get_comments(url=issue["comments_url"])
if not any( if not any(
@ -226,6 +232,9 @@ def maintain(config_path: Path, schedule: timedelta):
): ):
_resolve(notif, "Unengaged issue closed") _resolve(notif, "Unengaged issue closed")
if user["author"]["login"] in author_shitlist:
_resolve(notif, "Ignoring issue by author")
while True: while True:
try: try:
savepoint = prev savepoint = prev
@ -237,17 +246,18 @@ def maintain(config_path: Path, schedule: timedelta):
notif_timestamp = datetime.fromisoformat(notif["updated_at"]) notif_timestamp = datetime.fromisoformat(notif["updated_at"])
if (mark - notif_timestamp).days > 3: if (mark - notif_timestamp).days > 3:
_resolve(notif, "More than 3 days old") _resolve(notif, "More than 3 days old")
continue
subject = notif["subject"] subject = notif["subject"]
match subject["type"]: match subject["type"].lower():
case "PullRequest": case "pullrequest":
_pr(subject, notif) _pr(subject, notif)
case "mention": case "mention":
_mention(subject, notif) _mention(subject, notif)
case "Issue": case "issue":
_issue(subject, notif) _issue(subject, notif)
duration = (tick - datetime.now(timezone.utc)).total_seconds() duration = (tick - datetime.now(timezone.utc)).total_seconds()