github.com/noironetworks/cilium-net@v1.6.12/contrib/backporting/set-labels.py (about) 1 #!/usr/bin/env python3 2 3 """ 4 This script requires PyGithub to be installed 5 `pip install pygithub` 6 7 GITHUB_TOKEN env variable is used to access GH API 8 """ 9 10 import argparse 11 import os 12 import sys 13 14 try: 15 from github import Github 16 except ImportError: 17 print("pygithub not found you can install it by running 'pip3 install --user PyGithub'") 18 sys.exit(-1) 19 20 parser = argparse.ArgumentParser() 21 parser.add_argument('pr_number', type=int) 22 actions = ["pending", "done"] 23 parser.add_argument('action', type=str, choices=actions) 24 parser.add_argument('version', type=str, default="1.0", nargs='?') 25 26 args = parser.parse_args() 27 28 token = os.environ["GITHUB_TOKEN"] 29 pr_number = args.pr_number 30 action = args.action 31 version = args.version 32 33 g = Github(token) 34 cilium = g.get_repo("cilium/cilium") 35 pr = cilium.get_pull(pr_number) 36 pr_labels = list(pr.get_labels()) 37 old_label_len = len(pr_labels) 38 39 cilium_labels = cilium.get_labels() 40 41 print("Setting labels for PR {}... ".format(pr_number), end="") 42 if action == "pending": 43 pr_labels = [l for l in pr_labels 44 if l.name != "needs-backport/"+version] 45 if old_label_len - 1 != len(pr_labels): 46 print("needs-backport/"+version+" label not found in PR, exiting") 47 sys.exit(1) 48 49 pr_labels.append( 50 [l for l in cilium_labels if l.name == "backport-pending/"+version][0]) 51 52 if old_label_len != len(pr_labels): 53 print("error adding backport-pending/"+version+" label to PR, exiting") 54 sys.exit(2) 55 pr.set_labels(*pr_labels) 56 57 if action == "done": 58 pr_labels = [l for l in pr_labels 59 if l.name != "backport-pending/"+version] 60 if old_label_len - 1 != len(pr_labels): 61 print("backport-pending/"+version+" label not found in PR, exiting") 62 sys.exit(1) 63 64 pr_labels.append( 65 [l for l in cilium_labels if l.name == "backport-done/"+version][0]) 66 67 if old_label_len != len(pr_labels): 68 print("error adding backport-done/"+version+" label to PR, exiting") 69 sys.exit(2) 70 pr.set_labels(*pr_labels) 71 72 print("✓")