| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Makes sure files have the right permissions. | 6 """Makes sure files have the right permissions. |
| 7 | 7 |
| 8 Some developers have broken SCM configurations that flip the executable | 8 Some developers have broken SCM configurations that flip the executable |
| 9 permission on for no good reason. Unix developers who run ls --color will then | 9 permission on for no good reason. Unix developers who run ls --color will then |
| 10 see .cc files in green and get confused. | 10 see .cc files in green and get confused. |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 levels = [logging.ERROR, logging.INFO, logging.DEBUG] | 436 levels = [logging.ERROR, logging.INFO, logging.DEBUG] |
| 437 logging.basicConfig(level=levels[min(len(levels) - 1, options.verbose)]) | 437 logging.basicConfig(level=levels[min(len(levels) - 1, options.verbose)]) |
| 438 | 438 |
| 439 if len(args) > 1: | 439 if len(args) > 1: |
| 440 parser.error('Too many arguments used') | 440 parser.error('Too many arguments used') |
| 441 | 441 |
| 442 if options.root: | 442 if options.root: |
| 443 options.root = os.path.abspath(options.root) | 443 options.root = os.path.abspath(options.root) |
| 444 | 444 |
| 445 if options.files: | 445 if options.files: |
| 446 # --file implies --bare (for PRESUBMIT.py). | |
| 447 options.bare = True | |
| 448 | |
| 449 errors = check_files(options.root, options.files) | 446 errors = check_files(options.root, options.files) |
| 450 else: | 447 else: |
| 451 api = get_scm(options.root, options.bare) | 448 api = get_scm(options.root, options.bare) |
| 452 start_dir = args[0] if args else api.root_dir | 449 start_dir = args[0] if args else api.root_dir |
| 453 errors = api.check(start_dir) | 450 errors = api.check(start_dir) |
| 454 | 451 |
| 455 if not options.bare: | 452 if not options.bare: |
| 456 print('Processed %s files, %d files where tested for shebang/ELF ' | 453 print('Processed %s files, %d files where tested for shebang/ELF ' |
| 457 'header' % (api.count, api.count_read_header)) | 454 'header' % (api.count, api.count_read_header)) |
| 458 | 455 |
| 459 if options.json: | 456 if options.json: |
| 460 with open(options.json, 'w') as f: | 457 with open(options.json, 'w') as f: |
| 461 json.dump(errors, f) | 458 json.dump(errors, f) |
| 462 | 459 |
| 463 if errors: | 460 if errors: |
| 464 if options.bare: | 461 if options.bare: |
| 465 print '\n'.join(e['full_path'] for e in errors) | 462 print '\n'.join(e['full_path'] for e in errors) |
| 466 else: | 463 else: |
| 467 print '\nFAILED\n' | 464 print '\nFAILED\n' |
| 468 print '\n'.join('%s: %s' % (e['full_path'], e['error']) for e in errors) | 465 print '\n'.join('%s: %s' % (e['full_path'], e['error']) for e in errors) |
| 469 return 1 | 466 return 1 |
| 470 if not options.bare: | 467 if not options.bare: |
| 471 print '\nSUCCESS\n' | 468 print '\nSUCCESS\n' |
| 472 return 0 | 469 return 0 |
| 473 | 470 |
| 474 | 471 |
| 475 if '__main__' == __name__: | 472 if '__main__' == __name__: |
| 476 sys.exit(main()) | 473 sys.exit(main()) |
| OLD | NEW |