| 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 |