Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #!/usr/bin/env python | |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 import argparse | |
| 7 import json | |
| 8 import os | |
| 9 import subprocess | |
| 10 import sys | |
| 11 import tempfile | |
| 12 | |
| 13 | |
| 14 SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) | |
| 15 SRC_DIR = os.path.abspath( | |
| 16 os.path.join(SCRIPT_DIR, os.path.pardir, os.path.pardir)) | |
| 17 | |
| 18 | |
| 19 def run_command(argv): | |
| 20 print 'Running %r' % argv | |
| 21 rc = subprocess.call(argv) | |
| 22 print 'Command %r returned exit code %d' % (argv, rc) | |
| 23 return rc | |
| 24 | |
| 25 | |
| 26 def mode_run(args): | |
| 27 try: | |
| 28 fd, tempfile_path = tempfile.mkstemp() | |
| 29 os.close(fd) | |
| 30 | |
| 31 rc = run_command([ | |
| 32 os.path.join(SRC_DIR, 'buildtools', 'checkdeps', 'checkdeps.py'), | |
| 33 '--json', tempfile_path | |
| 34 ]) | |
| 35 | |
| 36 with open(tempfile_path) as f: | |
|
iannucci
2014/10/10 08:53:50
does this have to run on windows? if not, you can
Paweł Hajdan Jr.
2014/10/10 09:21:20
Good suggestion, thanks for it and applied. Yes, t
| |
| 37 checkdeps_results = json.load(f) | |
| 38 | |
| 39 result_set = set() | |
| 40 for result in checkdeps_results: | |
| 41 for violation in result['violations']: | |
| 42 result_set.add((result['dependee_path'], violation['include_path'])) | |
| 43 | |
| 44 with open(args.output, 'w') as f: | |
| 45 json.dump({ | |
| 46 'valid': True, | |
| 47 'failures': ['%s: %s' % (r[0], r[1]) for r in result_set], | |
| 48 }, f) | |
| 49 | |
| 50 return rc | |
| 51 finally: | |
| 52 os.remove(tempfile_path) | |
| 53 | |
| 54 | |
| 55 def main(argv): | |
| 56 parser = argparse.ArgumentParser() | |
|
iannucci
2014/10/10 08:53:49
why not subparsers? e.g. `cmd run --output /path/t
Paweł Hajdan Jr.
2014/10/10 09:21:20
Done.
| |
| 57 parser.add_argument('--mode', required=True) | |
| 58 parser.add_argument('--output', required=True) | |
| 59 | |
| 60 args = parser.parse_args(argv) | |
| 61 | |
| 62 if args.mode == 'run': | |
|
iannucci
2014/10/10 08:53:50
then argparse does this for you
| |
| 63 return mode_run(args) | |
| 64 | |
| 65 print 'Unhandled mode %r' % args.mode | |
|
iannucci
2014/10/10 08:53:50
you should use parser.error for this sort of thing
| |
| 66 return 1 | |
| 67 | |
| 68 | |
| 69 if __name__ == '__main__': | |
| 70 sys.exit(main(sys.argv[1:])) | |
| OLD | NEW |