1#!/usr/bin/env python 2# 3# Copyright 2014 The Chromium Authors. All rights reserved. 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6 7"""Inlines all module.json files into "var allDescriptors" in Runtime.js.""" 8 9from os import path 10import errno 11import os 12import re 13import shutil 14import sys 15try: 16 import simplejson as json 17except ImportError: 18 import json 19 20 21def read_file(filename): 22 with open(filename, 'rt') as file: 23 return file.read() 24 25 26def build_modules(module_jsons): 27 result = [] 28 for json_filename in module_jsons: 29 if not path.exists(json_filename): 30 continue 31 module_name = path.basename(path.dirname(json_filename)) 32 33 # pylint: disable=E1103 34 module_json = json.loads(read_file(json_filename)) 35 module_json['name'] = module_name 36 37 # Clear scripts, as they are not used at runtime 38 # (only the fact of their presence is important). 39 if module_json.get('scripts'): 40 module_json['scripts'] = [] 41 result.append(module_json) 42 return json.dumps(result) 43 44 45def main(argv): 46 input_filename = argv[1] 47 output_filename = argv[2] 48 module_jsons = argv[3:] 49 50 output_contents = re.sub('var allDescriptors = \[\];', 'var allDescriptors = %s;' % build_modules(module_jsons).replace("\\", "\\\\"), read_file(input_filename), 1) 51 if (path.exists(output_filename)): 52 os.remove(output_filename) 53 with open(output_filename, 'w') as output_file: 54 output_file.write(output_contents) 55 56if __name__ == '__main__': 57 sys.exit(main(sys.argv)) 58