diff options
Diffstat (limited to 'llvm_tools')
-rwxr-xr-x | llvm_tools/nightly_revert_checker.py | 49 | ||||
-rwxr-xr-x | llvm_tools/nightly_revert_checker_test.py | 7 |
2 files changed, 41 insertions, 15 deletions
diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 3f5f771d..0311ccc4 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -64,7 +64,7 @@ def _parse_llvm_ebuild_for_shas( return results -def _find_interesting_shas(chromeos_base: str) -> t.List[t.Tuple[str]]: +def _find_interesting_chromeos_shas(chromeos_base: str) -> t.List[t.Tuple[str]]: llvm_dir = os.path.join(chromeos_base, 'src/third_party/chromiumos-overlay/sys-devel/llvm') candidate_ebuilds = [ @@ -88,7 +88,7 @@ _Email = t.NamedTuple('_Email', [ def _generate_revert_email( - friendly_name: str, sha: str, + repository_name: str, friendly_name: str, sha: str, prettify_sha: t.Callable[[str], tiny_render.Piece], new_reverts: t.List[revert_checker.Revert]) -> _Email: email_pieces = [ @@ -118,7 +118,8 @@ def _generate_revert_email( 'PTAL and consider reverting them locally.', ] return _Email( - subject='[revert-checker] new %s discovered across %s' % ( + subject='[revert-checker/%s] new %s discovered across %s' % ( + repository_name, 'revert' if len(new_reverts) == 1 else 'reverts', friendly_name, ), @@ -126,12 +127,21 @@ def _generate_revert_email( ) -def _send_revert_email(email: _Email) -> None: +_EmailRecipients = t.NamedTuple( + '_EmailRecipients', + [ + ('well_known', t.List[str]), + ('direct', t.List[str]), + ], +) + + +def _send_revert_email(recipients: _EmailRecipients, email: _Email) -> None: email_sender.EmailSender().SendX20Email( subject=email.subject, identifier='revert-checker', - well_known_recipients=['mage'], - direct_recipients=['gbiv@google.com'], + well_known_recipients=recipients.well_known, + direct_recipients=['gbiv@google.com'] + recipients.direct, text_body=tiny_render.render_text_pieces(email.body), html_body=tiny_render.render_html_pieces(email.body), ) @@ -169,12 +179,18 @@ def main(argv: t.List[str]) -> None: parser.add_argument( '--llvm_dir', required=True, help='Up-to-date LLVM directory to use.') parser.add_argument( - '--chromeos_dir', required=True, help='Up-to-date CrOS directory to use.') - parser.add_argument( '--dry_run', action='store_true', help='Print email contents, rather than sending them.') parser.add_argument('--debug', action='store_true') + + subparsers = parser.add_subparsers(dest='repository') + subparsers.required = True + + chromeos_subparser = subparsers.add_parser('chromeos') + chromeos_subparser.add_argument( + '--chromeos_dir', required=True, help='Up-to-date CrOS directory to use.') + opts = parser.parse_args(argv) logging.basicConfig( @@ -182,15 +198,21 @@ def main(argv: t.List[str]) -> None: level=logging.DEBUG if opts.debug else logging.INFO, ) - state_file = opts.state_file dry_run = opts.dry_run llvm_dir = opts.llvm_dir + repository = opts.repository + state_file = opts.state_file - state = _read_state(state_file) + if repository == 'chromeos': + interesting_shas = _find_interesting_chromeos_shas(opts.chromeos_dir) + recipients = _EmailRecipients(well_known=['mage'], direct=[]) + else: + raise ValueError('Unknown repository %s' % opts.repository) - interesting_shas = _find_interesting_shas(opts.chromeos_dir) logging.info('Interesting SHAs were %r', interesting_shas) + state = _read_state(state_file) + def prettify_sha(sha: str) -> tiny_render.Piece: rev = get_llvm_hash.GetVersionFrom(llvm_dir, sha) @@ -226,7 +248,8 @@ def main(argv: t.List[str]) -> None: continue revert_emails_to_send.append( - _generate_revert_email(friendly_name, sha, prettify_sha, new_reverts)) + _generate_revert_email(repository, friendly_name, sha, prettify_sha, + new_reverts)) # We want to be as free of obvious side-effects as possible in case something # above breaks. Hence, send the email as late as possible. @@ -236,7 +259,7 @@ def main(argv: t.List[str]) -> None: tiny_render.render_text_pieces(email.body)) else: logging.info('Sending email with subject %r...', email.subject) - _send_revert_email(email) + _send_revert_email(recipients, email) logging.info('Email sent.') _write_state(state_file, new_state) diff --git a/llvm_tools/nightly_revert_checker_test.py b/llvm_tools/nightly_revert_checker_test.py index dce29343..2841e2ed 100755 --- a/llvm_tools/nightly_revert_checker_test.py +++ b/llvm_tools/nightly_revert_checker_test.py @@ -27,6 +27,7 @@ class Test(unittest.TestCase): return 'pretty_' + sha email = nightly_revert_checker._generate_revert_email( + repository_name='${repo}', friendly_name='${name}', sha='${sha}', prettify_sha=prettify_sha, @@ -36,7 +37,7 @@ class Test(unittest.TestCase): ]) expected_email = nightly_revert_checker._Email( - subject='[revert-checker] new revert discovered across ${name}', + subject='[revert-checker/${repo}] new revert discovered across ${name}', body=[ 'It looks like there may be a new revert across ${name} (', 'pretty_${sha}', @@ -62,6 +63,7 @@ class Test(unittest.TestCase): return 'pretty_' + sha email = nightly_revert_checker._generate_revert_email( + repository_name='${repo}', friendly_name='${name}', sha='${sha}', prettify_sha=prettify_sha, @@ -76,7 +78,8 @@ class Test(unittest.TestCase): ]) expected_email = nightly_revert_checker._Email( - subject='[revert-checker] new reverts discovered across ${name}', + subject='[revert-checker/${repo}] new reverts discovered across ' + '${name}', body=[ 'It looks like there may be new reverts across ${name} (', 'pretty_${sha}', |