OLD | NEW |
| (Empty) |
1 # Copyright 2015 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 import os | |
6 | |
7 from fetcher.dependency import Dependency, target_name_from_path | |
8 | |
9 | |
10 class MojomFile(object): | |
11 """Mojom represents an interface file at a given location in the | |
12 repository.""" | |
13 def __init__(self, repository, name): | |
14 self.name = name | |
15 self._repository = repository | |
16 self.deps = [] | |
17 | |
18 def add_dependency(self, dependency): | |
19 """Declare a new dependency of this mojom.""" | |
20 self.deps.append(Dependency(self._repository, self.name, dependency)) | |
21 | |
22 def get_jinja_parameters(self, include_dirs): | |
23 """Get the Jinja parameters to construct the BUILD.gn target of this | |
24 mojom.""" | |
25 params = {} | |
26 params["filename"] = os.path.basename(self.name) | |
27 params["target_name"] = target_name_from_path(self.name) | |
28 params["deps"] = [] | |
29 params["mojo_sdk_deps"] = [] | |
30 params["import_dirs"] = set() | |
31 | |
32 for dep in self.deps: | |
33 # Mojo SDK dependencies have special treatment. | |
34 if dep.is_sdk_dep(): | |
35 target, _ = dep.get_target_and_import(include_dirs) | |
36 params["mojo_sdk_deps"].append(target) | |
37 else: | |
38 target, import_dir = dep.get_target_and_import(include_dirs) | |
39 if import_dir != None: | |
40 params["import_dirs"].add(import_dir) | |
41 params["deps"].append(target) | |
42 | |
43 if len(params["import_dirs"]) != 0: | |
44 params["import_dirs"] = list(params["import_dirs"]) | |
45 else: | |
46 del params["import_dirs"] | |
47 return params | |
48 | |
49 def _os_path_exists(self, path): | |
50 return os.path.exists(path) | |
51 | |
OLD | NEW |