| #!/usr/bin/env python |
| # |
| # Copyright 2013 The Flutter Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import sys |
| import subprocess |
| import os |
| import argparse |
| import errno |
| import shutil |
| |
| def GetGNFiles(directory): |
| directory = os.path.abspath(directory) |
| gn_files = [] |
| assert os.path.exists(directory), "Directory must exist %s" % directory |
| for root, dirs, files in os.walk(directory): |
| for file in files: |
| if file.endswith(".gn") or file.endswith(".gni"): |
| gn_files.append(os.path.join(root, file)) |
| return gn_files |
| |
| def main(): |
| parser = argparse.ArgumentParser(); |
| |
| parser.add_argument('--gn-binary', dest='gn_binary', required=True, type=str) |
| parser.add_argument('--dry-run', dest='dry_run', default=False, action='store_true') |
| parser.add_argument('--root-directory', dest='root_directory', required=True, type=str) |
| |
| args = parser.parse_args() |
| |
| gn_binary = os.path.abspath(args.gn_binary) |
| assert os.path.exists(gn_binary), "GN Binary must exist %s" % gn_binary |
| |
| gn_command = [ gn_binary, 'format'] |
| |
| if args.dry_run: |
| gn_command.append('--dry-run') |
| |
| for gn_file in GetGNFiles(args.root_directory): |
| if subprocess.call(gn_command + [ gn_file ]) != 0: |
| print "ERROR: '%s' is incorrectly formatted." % os.path.relpath(gn_file, args.root_directory) |
| print "Format the same with 'gn format' using the 'gn' binary in third_party/gn/gn." |
| print "Or, run ./ci/check_gn_format.py without '--dry-run'" |
| return 1 |
| |
| return 0 |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |