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

Unified Diff: services/shell/public/tools/manifest/manifest_collator.py

Issue 2389133008: Mash: Replaces "exe:chrome" with "service:content_browser" (Closed)
Patch Set: rebase Created 4 years, 2 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 | « services/shell/public/service_manifest.gni ('k') | services/shell/service_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/shell/public/tools/manifest/manifest_collator.py
diff --git a/services/shell/public/tools/manifest/manifest_collator.py b/services/shell/public/tools/manifest/manifest_collator.py
index 4cf845b38b8a5434ac531b222f3e0b533a55c1ef..a8d79b26b3ff20aed0f82d134296ebd4955e778c 100755
--- a/services/shell/public/tools/manifest/manifest_collator.py
+++ b/services/shell/public/tools/manifest/manifest_collator.py
@@ -12,6 +12,13 @@ import shutil
import sys
import urlparse
+
+# Keys which are completely overridden by manifest overlays
+_MANIFEST_OVERLAY_OVERRIDE_KEYS = [
+ "display_name",
+ "process-group",
+]
+
eater_relative = '../../../../../../tools/json_comment_eater'
eater_relative = os.path.join(os.path.abspath(__file__), eater_relative)
sys.path.insert(0, os.path.normpath(eater_relative))
@@ -20,13 +27,15 @@ try:
finally:
sys.path.pop(0)
+
def ParseJSONFile(filename):
with open(filename) as json_file:
try:
return json.loads(json_comment_eater.Nom(json_file.read()))
- except ValueError:
+ except ValueError as e:
print "%s is not a valid JSON document" % filename
- return None
+ raise e
+
def MergeDicts(left, right):
for k, v in right.iteritems():
@@ -44,16 +53,17 @@ def MergeDicts(left, right):
return left
-def MergeBaseManifest(parent, base):
- MergeDicts(parent["capabilities"], base["capabilities"])
+def MergeManifestOverlay(manifest, overlay):
+ MergeDicts(manifest["capabilities"], overlay["capabilities"])
- if "services" in base:
- if "services" not in parent:
- parent["services"] = []
- parent["services"].extend(base["services"])
+ if "services" in overlay:
+ if "services" not in manifest:
+ manifest["services"] = []
+ manifest["services"].extend(overlay["services"])
- if "process-group" in base:
- parent["process-group"] = base["process-group"]
+ for key in _MANIFEST_OVERLAY_OVERRIDE_KEYS:
+ if key in overlay:
+ manifest[key] = overlay[key]
def main():
@@ -62,18 +72,10 @@ def main():
parser.add_argument("--parent")
parser.add_argument("--output")
parser.add_argument("--name")
- parser.add_argument("--base-manifest", default=None)
+ parser.add_argument("--overlays", nargs="+", dest="overlays", default=[])
args, children = parser.parse_known_args()
parent = ParseJSONFile(args.parent)
- if parent == None:
- return 1
-
- if args.base_manifest:
- base = ParseJSONFile(args.base_manifest)
- if base == None:
- return 1
- MergeBaseManifest(parent, base)
service_path = parent['name'].split(':')[1]
if service_path.startswith('//'):
@@ -87,14 +89,14 @@ def main():
services = []
for child in children:
- service = ParseJSONFile(child)
- if service == None:
- return 1
- services.append(service)
+ services.append(ParseJSONFile(child))
if len(services) > 0:
parent['services'] = services
+ for overlay_path in args.overlays:
+ MergeManifestOverlay(parent, ParseJSONFile(overlay_path))
+
with open(args.output, 'w') as output_file:
json.dump(parent, output_file)
« no previous file with comments | « services/shell/public/service_manifest.gni ('k') | services/shell/service_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698