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

Side by Side Diff: services/shell/public/tools/manifest/manifest_collator.py

Issue 2164503006: Rename mojo_application GN templates to service* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 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 | « services/shell/public/service_manifest.gypi ('k') | services/shell/runner/child/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2016 The Chromium Authors. All rights reserved. 2 # Copyright 2016 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """ A collator for Mojo Application Manifests """ 6 """ A collator for Service Manifests """
7 7
8 import argparse 8 import argparse
9 import json 9 import json
10 import os 10 import os
11 import shutil 11 import shutil
12 import sys 12 import sys
13 import urlparse 13 import urlparse
14 14
15 eater_relative = '../../../../../tools/json_comment_eater' 15 eater_relative = '../../../../../../tools/json_comment_eater'
16 eater_relative = os.path.join(os.path.abspath(__file__), eater_relative) 16 eater_relative = os.path.join(os.path.abspath(__file__), eater_relative)
17 sys.path.insert(0, os.path.normpath(eater_relative)) 17 sys.path.insert(0, os.path.normpath(eater_relative))
18 try: 18 try:
19 import json_comment_eater 19 import json_comment_eater
20 finally: 20 finally:
21 sys.path.pop(0) 21 sys.path.pop(0)
22 22
23 def ParseJSONFile(filename): 23 def ParseJSONFile(filename):
24 with open(filename) as json_file: 24 with open(filename) as json_file:
25 try: 25 try:
(...skipping 14 matching lines...) Expand all
40 assert isinstance(left[k], list) 40 assert isinstance(left[k], list)
41 left[k].extend(v) 41 left[k].extend(v)
42 else: 42 else:
43 raise "Refusing to merge conflicting non-collection values." 43 raise "Refusing to merge conflicting non-collection values."
44 return left 44 return left
45 45
46 46
47 def MergeBaseManifest(parent, base): 47 def MergeBaseManifest(parent, base):
48 MergeDicts(parent["capabilities"], base["capabilities"]) 48 MergeDicts(parent["capabilities"], base["capabilities"])
49 49
50 if "applications" in base: 50 if "services" in base:
51 if "applications" not in parent: 51 if "services" not in parent:
52 parent["applications"] = [] 52 parent["services"] = []
53 parent["applications"].extend(base["applications"]) 53 parent["services"].extend(base["services"])
54 54
55 if "process-group" in base: 55 if "process-group" in base:
56 parent["process-group"] = base["process-group"] 56 parent["process-group"] = base["process-group"]
57 57
58 58
59 def main(): 59 def main():
60 parser = argparse.ArgumentParser( 60 parser = argparse.ArgumentParser(
61 description="Collate Mojo application manifests.") 61 description="Collate Service Manifests.")
62 parser.add_argument("--parent") 62 parser.add_argument("--parent")
63 parser.add_argument("--output") 63 parser.add_argument("--output")
64 parser.add_argument("--application-name") 64 parser.add_argument("--name")
65 parser.add_argument("--base-manifest", default=None) 65 parser.add_argument("--base-manifest", default=None)
66 args, children = parser.parse_known_args() 66 args, children = parser.parse_known_args()
67 67
68 parent = ParseJSONFile(args.parent) 68 parent = ParseJSONFile(args.parent)
69 if parent == None: 69 if parent == None:
70 return 1 70 return 1
71 71
72 if args.base_manifest: 72 if args.base_manifest:
73 base = ParseJSONFile(args.base_manifest) 73 base = ParseJSONFile(args.base_manifest)
74 if base == None: 74 if base == None:
75 return 1 75 return 1
76 MergeBaseManifest(parent, base) 76 MergeBaseManifest(parent, base)
77 77
78 app_path = parent['name'].split(':')[1] 78 service_path = parent['name'].split(':')[1]
79 if app_path.startswith('//'): 79 if service_path.startswith('//'):
80 raise ValueError("Application name path component '%s' must not start " \ 80 raise ValueError("Service name path component '%s' must not start " \
81 "with //" % app_path) 81 "with //" % service_path)
82 82
83 if args.application_name != app_path: 83 if args.name != service_path:
84 raise ValueError("Application name '%s' specified in build file does not " \ 84 raise ValueError("Service name '%s' specified in build file does not " \
85 "match application name '%s' specified in manifest." % 85 "match name '%s' specified in manifest." %
86 (args.application_name, app_path)) 86 (args.name, service_path))
87 87
88 applications = [] 88 services = []
89 for child in children: 89 for child in children:
90 application = ParseJSONFile(child) 90 service = ParseJSONFile(child)
91 if application == None: 91 if service == None:
92 return 1 92 return 1
93 applications.append(application) 93 services.append(service)
94 94
95 if len(applications) > 0: 95 if len(services) > 0:
96 parent['applications'] = applications 96 parent['services'] = services
97 97
98 with open(args.output, 'w') as output_file: 98 with open(args.output, 'w') as output_file:
99 json.dump(parent, output_file) 99 json.dump(parent, output_file)
100 100
101 return 0 101 return 0
102 102
103 if __name__ == "__main__": 103 if __name__ == "__main__":
104 sys.exit(main()) 104 sys.exit(main())
OLDNEW
« no previous file with comments | « services/shell/public/service_manifest.gypi ('k') | services/shell/runner/child/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698