|  | #!/usr/bin/env python | 
|  | # Copyright 2014 The Chromium Authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | """Generates the list of dart source file outputs from a mojom.Module.""" | 
|  |  | 
|  | import argparse | 
|  | import os | 
|  | import re | 
|  | import shutil | 
|  | import sys | 
|  |  | 
|  | SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) | 
|  | SDK_DIR = os.path.join(SCRIPT_DIR, os.path.pardir, os.path.pardir) | 
|  | sys.path.insert(0, os.path.join(SCRIPT_DIR, 'pylib')) | 
|  |  | 
|  | from mojom.error import Error | 
|  | from mojom.parse import parser_runner | 
|  | from mojom.generate import mojom_translator | 
|  |  | 
|  | def mojom_path(name, namespace, attributes): | 
|  | package_name = 'mojom' | 
|  | if attributes and attributes.get('DartPackage'): | 
|  | package_name = attributes['DartPackage'] | 
|  | elements = [package_name, 'lib'] | 
|  | elements.extend(namespace.split('.')) | 
|  | elements.append("%s.dart" % name) | 
|  | return os.path.join(*elements) | 
|  |  | 
|  |  | 
|  | def process_mojom(path_to_mojom): | 
|  | filename = os.path.abspath(path_to_mojom) | 
|  |  | 
|  | # Parse | 
|  | mojom_file_graph = parser_runner.ParseToMojomFileGraph(SDK_DIR, [filename], | 
|  | meta_data_only=True) | 
|  | if mojom_file_graph is None: | 
|  | print("Error parsing %s" % filename) | 
|  | mojom_dict = mojom_translator.TranslateFileGraph(mojom_file_graph) | 
|  | mojom = mojom_dict[filename] | 
|  |  | 
|  | # Output path | 
|  | attributes = mojom.attributes | 
|  | print(mojom_path(mojom.name, mojom.namespace, attributes)) | 
|  |  | 
|  |  | 
|  | def main(): | 
|  | parser = argparse.ArgumentParser(description='Output list of ') | 
|  | parser.add_argument('--mojoms', | 
|  | metavar='mojoms', | 
|  | nargs='+', | 
|  | required=True) | 
|  | args = parser.parse_args() | 
|  |  | 
|  | for mojom in args.mojoms: | 
|  | process_mojom(mojom) | 
|  |  | 
|  | return 0 | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(main()) |