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

Unified Diff: chrome/browser/resources/chromeos/chromevox/tools/merge_manifests.py

Issue 295123002: Provide script/gypi support for manifest generation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More style. Created 6 years, 7 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
Index: chrome/browser/resources/chromeos/chromevox/tools/merge_manifests.py
diff --git a/chrome/browser/resources/chromeos/chromevox/tools/merge_manifests.py b/chrome/browser/resources/chromeos/chromevox/tools/merge_manifests.py
new file mode 100755
index 0000000000000000000000000000000000000000..633d3fbda3e40dd762dc37d1359a36ebe322f3a3
--- /dev/null
+++ b/chrome/browser/resources/chromeos/chromevox/tools/merge_manifests.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import json
Peter Lundblad 2014/05/22 00:28:25 Care to provide a minimal docstring?
David Tseng 2014/05/22 02:42:04 Done.
+import optparse
+import sys
+
+def MergeManifests(base, override, output):
+ ''' Takes two extension manifests and merges them into an output manifest.
Peter Lundblad 2014/05/22 00:28:25 Nit: space after '''
David Tseng 2014/05/22 02:42:04 Remove it? + ''' Takes two extension manifests an
+
+ Args:
+ base: path to a extension manifest.
+ override: path to a extension manifest.
+ output: path to the result of merging base and override.
+ '''
+ base_file = open(base)
+ override_file = open(override)
Peter Lundblad 2014/05/22 00:28:25 Consider using with to have these automatically cl
David Tseng 2014/05/22 02:42:04 Done. (Nice construct).
+ base_manifest = json.load(base_file)
+ override_manifest = json.load(override_file)
+ MergeDicts(base_manifest, override_manifest)
+ json.dump(base_manifest, open(output, 'w'), sort_keys=True, indent=2)
Peter Lundblad 2014/05/22 00:28:25 Can you put the open call out of line and close th
David Tseng 2014/05/22 02:42:04 Done.
+
+
+def MergeDicts(base, override):
+ '''Merges override into base.
+
+ Args:
+ base: dictionary with base key values.
+ override: dictionary with key values to insert (and possibly overwrite) in
+ base.
+ '''
+ for key in override:
+ if type(override[key]) is dict:
+ MergeDicts(base, override[key])
Peter Lundblad 2014/05/22 00:28:25 Shouldn't you merge override into base[key], creat
David Tseng 2014/05/22 02:42:04 yYup; goofed on this case; also handle the case wh
+ else:
+ base[key] = override[key]
+
+
+def main():
+ parser = optparse.OptionParser(description=__doc__)
+ parser.usage = ('%prog [options] <base_manifest_path>'
+ ' <override_manifest_path> <output_manifest_path>')
Peter Lundblad 2014/05/22 00:28:25 I recommend making the out file an -o option to be
+ _, args = parser.parse_args()
+ if len(args) != 3:
+ print >>sys.stderr, 'Expected exactly three arguments'
+ sys.exit(1)
+ MergeManifests(args[0], args[1], args[2])
+
+if __name__ == '__main__':
+ main()

Powered by Google App Engine
This is Rietveld 408576698