#!/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 //buildtools." print "Or, run ./ci/check_gn_format.py with '--dry-run false'" return 1 return 0 if __name__ == '__main__': sys.exit(main())