1# Copyright 2019 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5""" 6Generates an umbrella header file that #import all public header of a 7binary framework. 8""" 9 10import argparse 11import os 12import sys 13 14 15def GenerateImport(header): 16 """Returns a string for importing |header|.""" 17 return '#import "%s"\n' % os.path.basename(header) 18 19 20def GenerateUmbrellaHeader(headers): 21 """Returns a string with the content of the umbrella header.""" 22 return ''.join([ GenerateImport(header) for header in headers ]) 23 24 25def ParseArgs(argv): 26 """Parses command line arguments.""" 27 parser = argparse.ArgumentParser( 28 description=__doc__, 29 formatter_class=argparse.ArgumentDefaultsHelpFormatter) 30 31 parser.add_argument( 32 'headers', nargs='+', 33 help='path to the public heeaders') 34 parser.add_argument( 35 '-o', '--output', default='-', 36 help='path of the output file to create; - means stdout') 37 38 return parser.parse_args(argv) 39 40 41def main(argv): 42 args = ParseArgs(argv) 43 44 content = GenerateUmbrellaHeader(args.headers) 45 46 if args.output == '-': 47 sys.stdout.write(content) 48 else: 49 with open(args.output, 'w') as output: 50 output.write(content) 51 52 53if __name__ == '__main__': 54 sys.exit(main(sys.argv[1:])) 55