| OLD | NEW | 
|    1 # This Source Code Form is subject to the terms of the Mozilla Public |    1 # This Source Code Form is subject to the terms of the Mozilla Public | 
|    2 # License, v. 2.0. If a copy of the MPL was not distributed with this |    2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 
|    3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |    3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 
|    4  |    4  | 
|    5 import errno |    5 import errno | 
|    6 import io |    6 import io | 
|    7 import json |    7 import json | 
|    8 import os |    8 import os | 
|    9 import re |    9 import re | 
|   10 from StringIO import StringIO |   10 from StringIO import StringIO | 
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  131     # Normalize JSON structure |  131     # Normalize JSON structure | 
|  132     licenseComment = re.compile(r'/\*.*?\*/', re.S) |  132     licenseComment = re.compile(r'/\*.*?\*/', re.S) | 
|  133     data = json.loads(re.sub(licenseComment, '', manifest, 1)) |  133     data = json.loads(re.sub(licenseComment, '', manifest, 1)) | 
|  134     if '_dummy' in data: |  134     if '_dummy' in data: | 
|  135         del data['_dummy'] |  135         del data['_dummy'] | 
|  136     manifest = json.dumps(data, sort_keys=True, indent=2) |  136     manifest = json.dumps(data, sort_keys=True, indent=2) | 
|  137  |  137  | 
|  138     return manifest.encode('utf-8') |  138     return manifest.encode('utf-8') | 
|  139  |  139  | 
|  140  |  140  | 
|  141 def createInfoModule(params): |  | 
|  142     if params['type'] == 'gecko-webext': |  | 
|  143         template = getTemplate('geckoInfo.js.tmpl') |  | 
|  144     else: |  | 
|  145         template = getTemplate('chromeInfo.js.tmpl') |  | 
|  146     return template.render(params).encode('utf-8') |  | 
|  147  |  | 
|  148  |  | 
|  149 def convertJS(params, files): |  141 def convertJS(params, files): | 
|  150     output_files = collections.OrderedDict() |  142     output_files = collections.OrderedDict() | 
|  151     args = {} |  143     args = {} | 
|  152  |  144  | 
|  153     for item in params['metadata'].items('convert_js'): |  145     for item in params['metadata'].items('convert_js'): | 
|  154         name, value = item |  146         name, value = item | 
|  155         filename, arg = re.search(r'^(.*?)(?:\[(.*)\])?$', name).groups() |  147         filename, arg = re.search(r'^(.*?)(?:\[(.*)\])?$', name).groups() | 
|  156         if arg is None: |  148         if arg is None: | 
|  157             output_files[filename] = (value.split(), item.source) |  149             output_files[filename] = (value.split(), item.source) | 
|  158         else: |  150         else: | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
|  176             module_name = os.path.splitext(os.path.basename(input_filename))[0] |  168             module_name = os.path.splitext(os.path.basename(input_filename))[0] | 
|  177             prefix = os.path.basename(os.path.dirname(input_filename)) |  169             prefix = os.path.basename(os.path.dirname(input_filename)) | 
|  178             if prefix != 'lib': |  170             if prefix != 'lib': | 
|  179                 module_name = '{}_{}'.format(prefix, module_name) |  171                 module_name = '{}_{}'.format(prefix, module_name) | 
|  180             with open(os.path.join(base_dir, input_filename), 'r') as file: |  172             with open(os.path.join(base_dir, input_filename), 'r') as file: | 
|  181                 modules.append((module_name, file.read().decode('utf-8'))) |  173                 modules.append((module_name, file.read().decode('utf-8'))) | 
|  182             files.pop(input_filename, None) |  174             files.pop(input_filename, None) | 
|  183  |  175  | 
|  184         files[filename] = template.render( |  176         files[filename] = template.render( | 
|  185             args=current_args, |  177             args=current_args, | 
|  186             modules=modules |  178             basename=params['metadata'].get('general', 'basename'), | 
 |  179             modules=modules, | 
 |  180             type=params['type'], | 
 |  181             version=params['metadata'].get('general', 'version') | 
|  187         ).encode('utf-8') |  182         ).encode('utf-8') | 
|  188  |  183  | 
|  189  |  184  | 
|  190 def toJson(data): |  185 def toJson(data): | 
|  191     return json.dumps( |  186     return json.dumps( | 
|  192         data, ensure_ascii=False, sort_keys=True, |  187         data, ensure_ascii=False, sort_keys=True, | 
|  193         indent=2, separators=(',', ': ') |  188         indent=2, separators=(',', ': ') | 
|  194     ).encode('utf-8') + '\n' |  189     ).encode('utf-8') + '\n' | 
|  195  |  190  | 
|  196  |  191  | 
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  389     files['manifest.json'] = createManifest(params, files) |  384     files['manifest.json'] = createManifest(params, files) | 
|  390     if type == 'chrome': |  385     if type == 'chrome': | 
|  391         fixTranslationsForCWS(files) |  386         fixTranslationsForCWS(files) | 
|  392  |  387  | 
|  393     if devenv: |  388     if devenv: | 
|  394         import buildtools |  389         import buildtools | 
|  395         import random |  390         import random | 
|  396         files.read(os.path.join(buildtools.__path__[0], 'chromeDevenvPoller__.js
     '), relpath='devenvPoller__.js') |  391         files.read(os.path.join(buildtools.__path__[0], 'chromeDevenvPoller__.js
     '), relpath='devenvPoller__.js') | 
|  397         files['devenvVersion__'] = str(random.random()) |  392         files['devenvVersion__'] = str(random.random()) | 
|  398  |  393  | 
|  399     if (metadata.has_option('general', 'backgroundScripts') and |  | 
|  400         'lib/info.js' in metadata.get('general', 'backgroundScripts').split() an
     d |  | 
|  401         'lib/info.js' not in files): |  | 
|  402         files['lib/info.js'] = createInfoModule(params) |  | 
|  403  |  | 
|  404     if metadata.has_option('general', 'testScripts'): |  394     if metadata.has_option('general', 'testScripts'): | 
|  405         files['qunit/index.html'] = createScriptPage(params, 'testIndex.html.tmp
     l', |  395         files['qunit/index.html'] = createScriptPage(params, 'testIndex.html.tmp
     l', | 
|  406                                                      ('general', 'testScripts')) |  396                                                      ('general', 'testScripts')) | 
|  407  |  397  | 
|  408     zipdata = files.zipToString() |  398     zipdata = files.zipToString() | 
|  409     signature = None |  399     signature = None | 
|  410     pubkey = None |  400     pubkey = None | 
|  411     if keyFile != None: |  401     if keyFile != None: | 
|  412         signature = signBinary(zipdata, keyFile) |  402         signature = signBinary(zipdata, keyFile) | 
|  413         pubkey = getPublicKey(keyFile) |  403         pubkey = getPublicKey(keyFile) | 
|  414     writePackage(outFile, pubkey, signature, zipdata) |  404     writePackage(outFile, pubkey, signature, zipdata) | 
| OLD | NEW |