| # Copyright 2019 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """ |
| Builds Web IDL database. |
| |
| Web IDL database is a Python object that supports a variety of accessors to |
| IDL definitions such as IDL interface and IDL attribute. |
| """ |
| |
| import optparse |
| import sys |
| |
| import web_idl |
| |
| |
| def parse_options(): |
| parser = optparse.OptionParser() |
| parser.add_option( |
| '--output', type='string', help="filepath of the resulting database") |
| parser.add_option( |
| '--runtime_enabled_features', |
| type='string', |
| action='append', |
| help="filepath to runtime_enabled_features.json5") |
| options, args = parser.parse_args() |
| |
| required_option_names = ('output', 'runtime_enabled_features') |
| for opt_name in required_option_names: |
| if getattr(options, opt_name) is None: |
| parser.error("--{} is a required option.".format(opt_name)) |
| |
| if not args: |
| parser.error("No argument specified.") |
| |
| return options, args |
| |
| |
| def main(): |
| options, filepaths = parse_options() |
| |
| web_idl.init( |
| runtime_enabled_features_paths=options.runtime_enabled_features) |
| |
| was_error_reported = [False] |
| |
| def report_error(message): |
| was_error_reported[0] = True |
| sys.stderr.writelines([message, "\n"]) |
| |
| database = web_idl.build_database( |
| filepaths=filepaths, report_error=report_error) |
| |
| if was_error_reported[0]: |
| sys.exit("Aborted due to error.") |
| |
| database.write_to_file(options.output) |
| |
| |
| if __name__ == '__main__': |
| main() |