blob: beb26d91045ec523b800d1695aded6c8048b0553 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#!/usr/bin/env python3
# Requires PyGithub https://pypi.python.org/pypi/PyGithub, for instance
# debian package: python3-github
# nix: nix-shell -p python3 python3Packages.PyGithub --run ./github-check-rebase.py
from github import Github
import argparse
REPO = "coq/coq"
REBASE_LABEL="needs: rebase"
parser = argparse.ArgumentParser()
parser.add_argument("--token-file", type=argparse.FileType('r'))
args = parser.parse_args()
if args.token_file is None:
token = input("Github access token: ").strip()
else:
token = args.token_file.read().rstrip("\n")
args.token_file.close()
if token == "":
print ("Warning: using the GitHub API without a token")
print ("We may run into rate limit issues")
g = Github()
else:
g = Github(token)
repo = g.get_repo(REPO)
for pull in repo.get_pulls():
# if conflicts then dirty
# otherwise blocked (because I have no rights)
dirty = pull.mergeable_state == "dirty"
labelled = False
for label in repo.get_issue(pull.number).get_labels():
if label.name == REBASE_LABEL:
labelled = True
if labelled and not dirty:
print ("PR #" + str(pull.number) + " is not dirty but is labelled")
print ("("+ pull.html_url +")")
elif dirty and not labelled:
print ("PR #" + str(pull.number) + " is dirty and not labelled")
print ("("+ pull.html_url +")")
else:
# give some feedback so the user can see we didn't crash
print ("PR #" + str(pull.number) + " OK")
|