diff options
author | qsr@chromium.org <qsr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-14 12:02:33 +0000 |
---|---|---|
committer | qsr@chromium.org <qsr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-14 12:02:33 +0000 |
commit | c1445529aee82120638347afa603d0170f760188 (patch) | |
tree | 0d34fd673661b719066980e144ed74356bcfa0a0 /mojo | |
parent | f442ee47afe382b600355f51ed72a9c63096c5ae (diff) | |
download | chromium_src-c1445529aee82120638347afa603d0170f760188.zip chromium_src-c1445529aee82120638347afa603d0170f760188.tar.gz chromium_src-c1445529aee82120638347afa603d0170f760188.tar.bz2 |
Pass arguments from mojom_bindings_generator.py to each individual generator.
This will be needed for the java generator because the output directory
will have to be computed globally and not on a file by file basis.
R=viettrungluu@chromium.org
Review URL: https://codereview.chromium.org/260853005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270386 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo')
5 files changed, 14 insertions, 10 deletions
diff --git a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py index f981968..d27a13f 100644 --- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py +++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py @@ -222,7 +222,7 @@ class Generator(generator.Generator): def GenerateModuleSource(self): return self.GetJinjaExports() - def GenerateFiles(self): + def GenerateFiles(self, args): self.Write(self.GenerateModuleHeader(), "%s.h" % self.module.name) self.Write(self.GenerateModuleInternalHeader(), "%s-internal.h" % self.module.name) diff --git a/mojo/public/tools/bindings/generators/mojom_js_generator.py b/mojo/public/tools/bindings/generators/mojom_js_generator.py index 136e577..7bb600e 100644 --- a/mojo/public/tools/bindings/generators/mojom_js_generator.py +++ b/mojo/public/tools/bindings/generators/mojom_js_generator.py @@ -172,7 +172,7 @@ class Generator(generator.Generator): "interfaces": self.module.interfaces, } - def GenerateFiles(self): + def GenerateFiles(self, args): self.Write(self.GenerateJsModule(), "%s.js" % self.module.name) def GetImports(self): diff --git a/mojo/public/tools/bindings/generators/run_cpp_generator.py b/mojo/public/tools/bindings/generators/run_cpp_generator.py index 8a80a46..4c6f597 100755 --- a/mojo/public/tools/bindings/generators/run_cpp_generator.py +++ b/mojo/public/tools/bindings/generators/run_cpp_generator.py @@ -25,4 +25,4 @@ dir = None if len(sys.argv) > 2: dir = sys.argv[2] cpp = mojom_cpp_generator.Generator(module, ".", dir) -cpp.GenerateFiles() +cpp.GenerateFiles([]) diff --git a/mojo/public/tools/bindings/mojom_bindings_generator.py b/mojo/public/tools/bindings/mojom_bindings_generator.py index 8dbfde1..1300a80 100755 --- a/mojo/public/tools/bindings/mojom_bindings_generator.py +++ b/mojo/public/tools/bindings/mojom_bindings_generator.py @@ -76,8 +76,8 @@ def MakeImportStackMessage(imported_filename_stack): # Disable Check for dangerous default arguments (they're "private" keyword # arguments): # pylint: disable=W0102 -def ProcessFile(args, generator_modules, filename, _processed_files={}, - _imported_filename_stack=[]): +def ProcessFile(args, remaining_args, generator_modules, filename, + _processed_files={}, _imported_filename_stack=[]): # Memoized results. if filename in _processed_files: return _processed_files[filename] @@ -112,7 +112,7 @@ def ProcessFile(args, generator_modules, filename, _processed_files={}, for import_data in mojom['imports']: import_filename = os.path.join(dirname, import_data['filename']) import_data['module'] = ProcessFile( - args, generator_modules, import_filename, + args, remaining_args, generator_modules, import_filename, _processed_files=_processed_files, _imported_filename_stack=_imported_filename_stack + [filename]) @@ -127,7 +127,11 @@ def ProcessFile(args, generator_modules, filename, _processed_files={}, for generator_module in generator_modules: generator = generator_module.Generator(module, args.output_dir) - generator.GenerateFiles() + filtered_args = [] + if hasattr(generator_module, 'GENERATOR_PREFIX'): + prefix = '--' + generator_module.GENERATOR_PREFIX + '_' + filtered_args = [arg for arg in remaining_args if arg.startswith(prefix)] + generator.GenerateFiles(filtered_args) # Save result. _processed_files[filename] = module @@ -151,7 +155,7 @@ def main(): help="print the intermediate representation") parser.add_argument("--use_chromium_bundled_pylibs", action="store_true", help="use Python modules bundled in the Chromium source") - args = parser.parse_args() + (args, remaining_args) = parser.parse_known_args() generator_modules = LoadGenerators(args.generators_string) @@ -159,7 +163,7 @@ def main(): os.makedirs(args.output_dir) for filename in args.filename: - ProcessFile(args, generator_modules, filename) + ProcessFile(args, remaining_args, generator_modules, filename) return 0 diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py index 76e5998..1a1be21 100644 --- a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py +++ b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py @@ -98,5 +98,5 @@ class Generator(object): with open(os.path.join(self.output_dir, filename), "w+") as f: f.write(contents) - def GenerateFiles(self): + def GenerateFiles(self, args): raise NotImplementedError("Subclasses must override/implement this method") |