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

Unified Diff: mojo/public/tools/bindings/generators/mojom_dart_generator.py

Issue 1071693003: Uses mojom module names as Dart's package: import URI (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Merge Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/interfaces/application/BUILD.gn ('k') | mojo/public/tools/bindings/mojom.gni » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/tools/bindings/generators/mojom_dart_generator.py
diff --git a/mojo/public/tools/bindings/generators/mojom_dart_generator.py b/mojo/public/tools/bindings/generators/mojom_dart_generator.py
index 8332189f12dab2bbace5878c53392dbc0f485960..c64e7bcf1fca2fef36dcac7b8d22d1adb6db9aaa 100644
--- a/mojo/public/tools/bindings/generators/mojom_dart_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_dart_generator.py
@@ -352,6 +352,11 @@ def IsPointerArrayKind(kind):
sub_kind = kind.kind
return mojom.IsObjectKind(sub_kind)
+def GetImportUri(module):
+ elements = module.namespace.split('.')
+ elements.append("%s" % module.name)
+ return os.path.join(*elements)
+
class Generator(generator.Generator):
dart_filters = {
@@ -390,16 +395,17 @@ class Generator(generator.Generator):
return self.GetParameters(args)
def GenerateFiles(self, args):
- self.Write(self.GenerateLibModule(args),
- self.MatchMojomFilePath("%s.dart" % self.module.name))
+ elements = self.module.namespace.split('.')
+ elements.append("%s.dart" % self.module.name)
+ path = os.path.join("dart-gen", *elements)
+ self.Write(self.GenerateLibModule(args), path)
+ link = self.MatchMojomFilePath("%s.dart" % self.module.name)
+ if os.path.exists(os.path.join(self.output_dir, link)):
+ os.unlink(os.path.join(self.output_dir, link))
+ os.symlink(os.path.join(self.output_dir, path),
+ os.path.join(self.output_dir, link))
def GetImports(self, args):
- mojo_root_arg = next(
- (x for x in args if x.startswith("--dart_mojo_root")), "")
- (_, _, mojo_root_path) = mojo_root_arg.partition("=")
- if not mojo_root_path.startswith("//"):
- raise Exception("Malformed mojo SDK root: " + mojo_root_path)
- mojo_root_path = mojo_root_path[2:] # strip //
used_names = set()
for each_import in self.module.imports:
simple_name = each_import["module_name"].split(".")[0]
@@ -416,15 +422,7 @@ class Generator(generator.Generator):
each_import["unique_name"] = unique_name + '_mojom'
counter += 1
- # At this point, a module's path is reletive to the root of the repo.
- # However, imports of libraries from the Mojo SDK are always reletive to
- # root of the Mojo SDK, which may be different from the root of the repo.
- # This code uses the --dart_mojo_root argument to ensure that Mojo SDK
- # imports are reletive to the Mojo SDK root.
- path = each_import['module'].path
- if os.path.commonprefix([mojo_root_path, path]) == mojo_root_path:
- path = os.path.relpath(path, mojo_root_path)
- each_import["rebased_path"] = path
+ each_import["rebased_path"] = GetImportUri(each_import['module'])
return self.module.imports
def GetImportedInterfaces(self):
« no previous file with comments | « mojo/public/interfaces/application/BUILD.gn ('k') | mojo/public/tools/bindings/mojom.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698