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