| Index: components/domain_reliability/bake_in_configs.py
|
| diff --git a/components/domain_reliability/bake_in_configs.py b/components/domain_reliability/bake_in_configs.py
|
| index 8cee936d7585d4020bde4f773149942531e2ec06..1a171c72c9e1398ee0193b1b978b2c7b0068b1c1 100755
|
| --- a/components/domain_reliability/bake_in_configs.py
|
| +++ b/components/domain_reliability/bake_in_configs.py
|
| @@ -11,7 +11,9 @@ and loaded at runtime."""
|
|
|
| import ast
|
| import json
|
| +import optparse
|
| import os
|
| +import shlex
|
| import sys
|
|
|
|
|
| @@ -475,6 +477,12 @@ def read_json_files_from_gypi(gypi_file):
|
| return json_files
|
|
|
|
|
| +def read_json_files_from_file(list_file):
|
| + with open(list_file, 'r') as f:
|
| + list_text = f.read()
|
| + return shlex.split(list_text)
|
| +
|
| +
|
| def domain_is_whitelisted(domain):
|
| return any(domain == e or domain.endswith('.' + e) for e in DOMAIN_WHITELIST)
|
|
|
| @@ -500,19 +508,42 @@ def quote_and_wrap_text(text, width=79, prefix=' "', suffix='"'):
|
|
|
|
|
| def main():
|
| - if len(sys.argv) != 4:
|
| - print >> sys.stderr, (('Usage: %s <JSON pathname base directory> ' +
|
| - '<input .gypi file> <output .cpp file>') %
|
| - sys.argv[0])
|
| - print >> sys.stderr, sys.modules[__name__].__doc__
|
| + parser = optparse.OptionParser(usage="bake_in_configs.py [options]")
|
| + parser.add_option("", "--output", metavar="FILE",
|
| + help="[Required] Name of the .cc file to write.")
|
| +
|
| + # For response file reading.
|
| + parser.add_option("", "--file-list", metavar="FILE",
|
| + help="File containing whitespace separated names of "
|
| + "the baked in configs files.")
|
| +
|
| + # For .gypi file reading.
|
| + parser.add_option("", "--gypi-file", metavar="FILE",
|
| + help=".gypi file containing baked_in_configs variable.")
|
| + parser.add_option("", "--gypi-relative-to", metavar="PATH",
|
| + help="Directory the baked_in_configs in the --gypi-file"
|
| + "are relative to.""")
|
| +
|
| + opts, args = parser.parse_args()
|
| +
|
| + if not opts.output:
|
| + print >> sys.stderr, "--output argument required"
|
| return 1
|
| - json_path = sys.argv[1]
|
| - gypi_file = sys.argv[2]
|
| - cpp_file = sys.argv[3]
|
|
|
| - json_files = read_json_files_from_gypi(gypi_file)
|
| - json_files = [ os.path.join(json_path, f) for f in json_files ]
|
| - json_files = [ os.path.normpath(f) for f in json_files ]
|
| + if opts.gypi_file:
|
| + # .gypi-style input.
|
| + if not opts.gypi_relative_to:
|
| + print >> sys.stderr, "--gypi-relative-to is required with --gypi-file"
|
| + return 1
|
| + json_files = read_json_files_from_gypi(opts.gypi_file)
|
| + json_files = [ os.path.join(opts.gypi_relative_to, f) for f in json_files ]
|
| + json_files = [ os.path.normpath(f) for f in json_files ]
|
| + elif opts.file_list:
|
| + # Regular file list input.
|
| + json_files = read_json_files_from_file(opts.file_list)
|
| + else:
|
| + print >> sys.stderr, "Either --file-list or --gypi-file is required."
|
| + return 1
|
|
|
| cpp_code = CC_HEADER
|
| found_invalid_config = False
|
| @@ -549,7 +580,7 @@ def main():
|
| if found_invalid_config:
|
| return 1
|
|
|
| - with open(cpp_file, 'wb') as f:
|
| + with open(opts.output, 'wb') as f:
|
| f.write(cpp_code)
|
|
|
| return 0
|
|
|