Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(606)

Side by Side Diff: mojo/public/tools/bindings/generators/mojom_dart_generator.py

Issue 1210253006: Dart: Allows the mojom package's generate script to download .mojoms. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Address comments Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/dart/mojom/test/generate_test.dart ('k') | mojo/tools/get_test_list.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « mojo/dart/mojom/test/generate_test.dart ('k') | mojo/tools/get_test_list.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698