1#!/usr/bin/env python3 2# 3# ======- github-automation - LLVM GitHub Automation Routines--*- python -*--==# 4# 5# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 6# See https://llvm.org/LICENSE.txt for license information. 7# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 8# 9# ==-------------------------------------------------------------------------==# 10 11import argparse 12import github 13import os 14 15class IssueSubscriber: 16 17 @property 18 def team_name(self) -> str: 19 return self._team_name 20 21 def __init__(self, token:str, repo:str, issue_number:int, label_name:str): 22 self.repo = github.Github(token).get_repo(repo) 23 self.org = github.Github(token).get_organization(self.repo.organization.login) 24 self.issue = self.repo.get_issue(issue_number) 25 self._team_name = 'issue-subscribers-{}'.format(label_name).lower() 26 27 def run(self) -> bool: 28 for team in self.org.get_teams(): 29 if self.team_name != team.name.lower(): 30 continue 31 comment = '@llvm/{}'.format(team.slug) 32 self.issue.create_comment(comment) 33 return True 34 return False 35 36 37parser = argparse.ArgumentParser() 38parser.add_argument('--token', type=str, required=True) 39parser.add_argument('--repo', type=str, default=os.getenv('GITHUB_REPOSITORY', 'llvm/llvm-project')) 40subparsers = parser.add_subparsers(dest='command') 41 42issue_subscriber_parser = subparsers.add_parser('issue-subscriber') 43issue_subscriber_parser.add_argument('--label-name', type=str, required=True) 44issue_subscriber_parser.add_argument('--issue-number', type=int, required=True) 45 46args = parser.parse_args() 47 48if args.command == 'issue-subscriber': 49 issue_subscriber = IssueSubscriber(args.token, args.repo, args.issue_number, args.label_name) 50 issue_subscriber.run() 51