Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: packagerChrome.py

Issue 29743581: Issue 6552 - Support arbitrary manifest values (Closed) Base URL: https://hg.adblockplus.org/buildtools/file/a3db4a1a49e8
Patch Set: Created April 13, 2018, 9:13 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
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 glob 6 import glob
7 import io 7 import io
8 import json 8 import json
9 import os 9 import os
10 import re 10 import re
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 # ... = icon-19.png icon-38.png popup.html 94 # ... = icon-19.png icon-38.png popup.html
95 popup = icons.pop() 95 popup = icons.pop()
96 icon = makeIcons(files, icons) 96 icon = makeIcons(files, icons)
97 else: 97 else:
98 # ... = icon-16.png icon-32.png icon-48.png 98 # ... = icon-16.png icon-32.png icon-48.png
99 icon = makeIcons(files, icons) 99 icon = makeIcons(files, icons)
100 popup = None 100 popup = None
101 101
102 templateData[opt] = {'icon': icon, 'popup': popup} 102 templateData[opt] = {'icon': icon, 'popup': popup}
103 103
104 # Generate templatedataa which does not need special processing
Sebastian Noack 2018/04/14 00:33:07 Typo: templatedataa -> templatedata
tlucas 2018/04/14 08:36:23 Acknowledged.
tlucas 2018/04/18 14:46:04 Done. (Removed it completely)
105 templateData.update({'extra': metadata.as_json_object('manifest')})
106
104 if metadata.has_option('general', 'icons'): 107 if metadata.has_option('general', 'icons'):
105 templateData['icons'] = makeIcons(files, 108 templateData['icons'] = makeIcons(files,
106 metadata.get('general', 'icons').split ()) 109 metadata.get('general', 'icons').split ())
107 110
108 if metadata.has_option('general', 'permissions'):
109 templateData['permissions'] = metadata.get('general', 'permissions').spl it()
110
111 if metadata.has_option('general', 'optionalPermissions'):
112 templateData['optionalPermissions'] = metadata.get(
113 'general', 'optionalPermissions').split()
114
115 if metadata.has_option('general', 'backgroundScripts'): 111 if metadata.has_option('general', 'backgroundScripts'):
116 templateData['backgroundScripts'] = metadata.get( 112 templateData['backgroundScripts'] = metadata.get(
117 'general', 'backgroundScripts').split() 113 'general', 'backgroundScripts').split()
118 if params['devenv']: 114 if params['devenv']:
119 templateData['backgroundScripts'].append('devenvPoller__.js') 115 templateData['backgroundScripts'].append('devenvPoller__.js')
120 116
121 if metadata.has_option('general', 'webAccessible') and metadata.get('general ', 'webAccessible') != '':
122 templateData['webAccessible'] = metadata.get('general',
123 'webAccessible').split()
124
125 if metadata.has_section('contentScripts'): 117 if metadata.has_section('contentScripts'):
126 contentScripts = [] 118 contentScripts = []
127 for run_at, scripts in metadata.items('contentScripts'): 119 for run_at, scripts in metadata.items('contentScripts'):
128 if scripts == '': 120 if scripts == '':
129 continue 121 continue
130 contentScripts.append({ 122 contentScripts.append({
131 'matches': ['http://*/*', 'https://*/*'], 123 'matches': ['http://*/*', 'https://*/*'],
132 'js': scripts.split(), 124 'js': scripts.split(),
133 'run_at': run_at, 125 'run_at': run_at,
134 'all_frames': True, 126 'all_frames': True,
135 'match_about_blank': True, 127 'match_about_blank': True,
136 }) 128 })
137 templateData['contentScripts'] = contentScripts 129 templateData['contentScripts'] = contentScripts
138 if params['type'] == 'gecko': 130 if params['type'] == 'gecko':
139 templateData['app_id'] = get_app_id(params['releaseBuild'], metadata) 131 templateData['app_id'] = get_app_id(params['releaseBuild'], metadata)
140 132
141 manifest = template.render(templateData) 133 manifest = template.render(templateData)
142 134
143 # Normalize JSON structure 135 # Normalize JSON structure
144 licenseComment = re.compile(r'/\*.*?\*/', re.S) 136 licenseComment = re.compile(r'/\*.*?\*/', re.S)
145 data = json.loads(re.sub(licenseComment, '', manifest, 1)) 137 data = json.loads(re.sub(licenseComment, '', manifest, 1))
146 if '_dummy' in data: 138 if '_dummy' in data:
147 del data['_dummy'] 139 del data['_dummy']
148 manifest = json.dumps(data, sort_keys=True, indent=2) 140 manifest = json.dumps(data, sort_keys=True, indent=2)
Sebastian Noack 2018/04/14 09:08:39 If we inject the generic keys here, we don't have
tlucas 2018/04/18 14:46:05 OrderedDict is indeed not necessary, removed it. T
149 141
150 return manifest.encode('utf-8') 142 return manifest.encode('utf-8')
151 143
152 144
153 def toJson(data): 145 def toJson(data):
154 return json.dumps( 146 return json.dumps(
155 data, ensure_ascii=False, sort_keys=True, 147 data, ensure_ascii=False, sort_keys=True,
156 indent=2, separators=(',', ': ') 148 indent=2, separators=(',', ': ')
157 ).encode('utf-8') + '\n' 149 ).encode('utf-8') + '\n'
158 150
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 if devenv: 388 if devenv:
397 add_devenv_requirements(files, metadata, params) 389 add_devenv_requirements(files, metadata, params)
398 390
399 zipdata = files.zipToString() 391 zipdata = files.zipToString()
400 signature = None 392 signature = None
401 pubkey = None 393 pubkey = None
402 if keyFile != None: 394 if keyFile != None:
403 signature = signBinary(zipdata, keyFile) 395 signature = signBinary(zipdata, keyFile)
404 pubkey = getPublicKey(keyFile) 396 pubkey = getPublicKey(keyFile)
405 writePackage(outFile, pubkey, signature, zipdata) 397 writePackage(outFile, pubkey, signature, zipdata)
OLDNEW

Powered by Google App Engine
This is Rietveld