| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Generates dart source files from a mojom.Module.""" | 5 """Generates dart source files from a mojom.Module.""" |
| 6 | 6 |
| 7 import os | 7 import os |
| 8 import re | 8 import re |
| 9 import shutil | 9 import shutil |
| 10 import sys | 10 import sys |
| 11 | 11 |
| 12 import mojom.fileutil as fileutil |
| 12 import mojom.generate.constant_resolver as resolver | 13 import mojom.generate.constant_resolver as resolver |
| 13 import mojom.generate.generator as generator | 14 import mojom.generate.generator as generator |
| 14 import mojom.generate.module as mojom | 15 import mojom.generate.module as mojom |
| 15 import mojom.generate.pack as pack | 16 import mojom.generate.pack as pack |
| 16 from mojom.generate.template_expander import UseJinja | 17 from mojom.generate.template_expander import UseJinja |
| 17 | 18 |
| 18 GENERATOR_PREFIX = 'dart' | 19 GENERATOR_PREFIX = 'dart' |
| 19 | 20 |
| 20 _kind_to_dart_default_value = { | 21 _kind_to_dart_default_value = { |
| 21 mojom.BOOL: "false", | 22 mojom.BOOL: "false", |
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 } | 415 } |
| 415 | 416 |
| 416 @UseJinja("dart_templates/module.lib.tmpl", filters=dart_filters) | 417 @UseJinja("dart_templates/module.lib.tmpl", filters=dart_filters) |
| 417 def GenerateLibModule(self, args): | 418 def GenerateLibModule(self, args): |
| 418 return self.GetParameters(args) | 419 return self.GetParameters(args) |
| 419 | 420 |
| 420 | 421 |
| 421 def GenerateFiles(self, args): | 422 def GenerateFiles(self, args): |
| 422 elements = self.module.namespace.split('.') | 423 elements = self.module.namespace.split('.') |
| 423 elements.append("%s.dart" % self.module.name) | 424 elements.append("%s.dart" % self.module.name) |
| 424 path = os.path.join("dart-pkg", "mojom/lib", *elements) | 425 |
| 425 self.Write(self.GenerateLibModule(args), path) | 426 lib_module = self.GenerateLibModule(args) |
| 426 path = os.path.join("dart-gen", "mojom/lib", *elements) | 427 pkg_path = os.path.join("dart-pkg", "mojom/lib", *elements) |
| 427 self.Write(self.GenerateLibModule(args), path) | 428 self.Write(lib_module, pkg_path) |
| 429 |
| 430 gen_path = os.path.join("dart-gen", "mojom/lib", *elements) |
| 431 full_gen_path = os.path.join(self.output_dir, gen_path) |
| 432 self.Write(lib_module, gen_path) |
| 433 |
| 428 link = self.MatchMojomFilePath("%s.dart" % self.module.name) | 434 link = self.MatchMojomFilePath("%s.dart" % self.module.name) |
| 429 if os.path.exists(os.path.join(self.output_dir, link)): | 435 full_link_path = os.path.join(self.output_dir, link) |
| 430 os.unlink(os.path.join(self.output_dir, link)) | 436 if os.path.exists(full_link_path): |
| 437 os.unlink(full_link_path) |
| 438 fileutil.EnsureDirectoryExists(os.path.dirname(full_link_path)) |
| 431 try: | 439 try: |
| 432 if sys.platform == "win32": | 440 if sys.platform == "win32": |
| 433 shutil.copy(os.path.join(self.output_dir, path), | 441 shutil.copy(full_gen_path, full_link_path) |
| 434 os.path.join(self.output_dir, link)) | |
| 435 else: | 442 else: |
| 436 os.symlink(os.path.join(self.output_dir, path), | 443 os.symlink(full_gen_path, full_link_path) |
| 437 os.path.join(self.output_dir, link)) | |
| 438 except OSError as e: | 444 except OSError as e: |
| 439 # Errno 17 is file already exists. If the link fails because file already | 445 # Errno 17 is file already exists. If the link fails because file already |
| 440 # exists assume another instance of this script tried to create the same | 446 # exists assume another instance of this script tried to create the same |
| 441 # file and continue on. | 447 # file and continue on. |
| 442 if e.errno != 17: | 448 if e.errno != 17: |
| 443 raise e | 449 raise e |
| 444 | 450 |
| 445 def GetImports(self, args): | 451 def GetImports(self, args): |
| 446 used_names = set() | 452 used_names = set() |
| 447 for each_import in self.module.imports: | 453 for each_import in self.module.imports: |
| (...skipping 22 matching lines...) Expand all Loading... |
| 470 interface_to_import[name] = each_import["unique_name"] + "." + name | 476 interface_to_import[name] = each_import["unique_name"] + "." + name |
| 471 return interface_to_import | 477 return interface_to_import |
| 472 | 478 |
| 473 def ImportedFrom(self): | 479 def ImportedFrom(self): |
| 474 interface_to_import = {} | 480 interface_to_import = {} |
| 475 for each_import in self.module.imports: | 481 for each_import in self.module.imports: |
| 476 for each_interface in each_import["module"].interfaces: | 482 for each_interface in each_import["module"].interfaces: |
| 477 name = each_interface.name | 483 name = each_interface.name |
| 478 interface_to_import[name] = each_import["unique_name"] + "." | 484 interface_to_import[name] = each_import["unique_name"] + "." |
| 479 return interface_to_import | 485 return interface_to_import |
| OLD | NEW |