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

Delta Between Two Patch Sets: packagerEdge.py

Issue 29825555: Issue 6291 - add ManifoldJS packaging for Edge (Closed) Base URL: https://hg.adblockplus.org/buildtools/file/9a56d76cd951
Left Patch Set: Created July 19, 2018, 12:26 p.m.
Right Patch Set: Final patch set Created Aug. 9, 2018, 7:08 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « package.json ('k') | templates/edge/AppxBlockMap.xml.tmpl » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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 os 5 import os
6 import shutil 6 import shutil
7 from StringIO import StringIO 7 from StringIO import StringIO
8 import subprocess 8 import subprocess
9 import tempfile 9 import tempfile
10 from xml.etree import ElementTree 10 from xml.etree import ElementTree
(...skipping 13 matching lines...) Expand all
24 24
25 25
26 def register_xml_namespaces(manifest_path): 26 def register_xml_namespaces(manifest_path):
27 """Register namespaces of the given file, in order to preserve defaults.""" 27 """Register namespaces of the given file, in order to preserve defaults."""
28 with open(manifest_path, 'r') as fp: 28 with open(manifest_path, 'r') as fp:
29 ns = dict([node for _, node in ElementTree.iterparse( 29 ns = dict([node for _, node in ElementTree.iterparse(
30 fp, events=['start-ns'])]) 30 fp, events=['start-ns'])])
31 for prefix, uri in ns.items(): 31 for prefix, uri in ns.items():
32 ElementTree.register_namespace(prefix, uri) 32 ElementTree.register_namespace(prefix, uri)
33 33
34 # Make the default namespace available in an xpath expression
35 ns['_d'] = ns['']
36
34 return ns 37 return ns
35 38
36 39
37 def update_appx_manifest(manifest_path, base_dir, files, metadata, 40 def update_appx_manifest(manifest_path, base_dir, files, metadata,
38 release_build): 41 release_build):
39 namespaces = register_xml_namespaces(manifest_path) 42 namespaces = register_xml_namespaces(manifest_path)
40 43
41 def traverse(current_elem, overwrite):
42 if isinstance(overwrite, dict):
43 for key, value in overwrite.items():
44 if isinstance(key, tuple):
45 prefix, element = key
46 next_elem = current_elem.find(
47 '{{{}}}{}'.format(namespaces[prefix], element))
48 traverse(next_elem, value)
49 else:
50 current_elem.attrib.update(overwrite)
51 else:
52 current_elem.text = overwrite
53
54 v_min, v_max = metadata.get('compat', 'windows').split('/') 44 v_min, v_max = metadata.get('compat', 'windows').split('/')
55 45
56 filenames = [] 46 filenames = []
57 if metadata.has_section('appx_assets'):
Sebastian Noack 2018/07/25 19:18:41 This check seems redundant as we fail anyway below
tlucas 2018/08/08 09:35:55 Done.
58 for name, path in metadata.items('appx_assets'):
59 path = os.path.join(base_dir, path)
60 icon_path = '{}/{}'.format(ASSETS_DIR, name)
61 47
62 files.read(path, icon_path) 48 for name, path in metadata.items('appx_assets'):
63 filenames.append(icon_path) 49 path = os.path.join(base_dir, path)
50 icon_path = '{}/{}'.format(ASSETS_DIR, name)
51
52 files.read(path, icon_path)
53 filenames.append(icon_path)
64 54
65 assets = packagerChrome.makeIcons(files, filenames) 55 assets = packagerChrome.makeIcons(files, filenames)
66 56
67 overwrite = { 57 author = metadata.get('general', 'author')
68 ('', 'Identity'): { 58
69 'Name': packager.get_app_id(release_build, metadata), 59 overrides = [
70 'Publisher': metadata.get('general', 'publisher_id'), 60 ('_d:Identity', None, [
71 }, 61 ('Name', packager.get_app_id(release_build, metadata)),
72 ('', 'Properties'): { 62 ('Publisher', metadata.get('general', 'publisher_id')),
73 ('', 'PublisherDisplayName'): metadata.get('general', 'author'), 63 ]),
74 ('', 'Logo'): assets[50], 64 ('_d:Properties/_d:PublisherDisplayName', author, []),
75 }, 65 ('_d:Properties/_d:Logo', assets[50], []),
76 ('', 'Dependencies'): { 66 ('_d:Dependencies/_d:TargetDeviceFamily', None, [
77 ('', 'TargetDeviceFamily'): { 67 ('MaxVersionTested', v_max),
78 'MaxVersionTested': v_max, 68 ('MinVersion', v_min),
79 'MinVersion': v_min, 69 ]),
80 }, 70 ('_d:Applications/_d:Application/uap:VisualElements', None, [
81 }, 71 ('Square150x150Logo', assets[150]),
82 ('', 'Applications'): { 72 ('Square44x44Logo', assets[44]),
83 ('', 'Application'): { 73 ]),
84 ('uap', 'VisualElements'): { 74 ]
85 'Square150x150Logo': assets[150],
86 'Square44x44Logo': assets[44],
87 },
88 },
89 },
90 }
91 75
92 tree = ElementTree.parse(manifest_path) 76 tree = ElementTree.parse(manifest_path)
93 root = tree.getroot() 77 root = tree.getroot()
94 78
95 traverse(root, overwrite) 79 for xpath, text, attributes in overrides:
80 element = root.find(xpath, namespaces)
81 if text:
82 element.text = text
83 for attr, value in attributes:
84 element.set(attr, value)
96 85
97 tree.write(manifest_path, encoding='utf-8', xml_declaration=True) 86 tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
98 87
99 88
100 def createBuild(baseDir, type='edge', outFile=None, # noqa: preserve API. 89 def createBuild(baseDir, type='edge', outFile=None, # noqa: preserve API.
101 buildNum=None, releaseBuild=False, keyFile=None, 90 buildNum=None, releaseBuild=False, keyFile=None,
102 devenv=False): 91 devenv=False):
103 92
104 metadata = packager.readMetadata(baseDir, type) 93 metadata = packager.readMetadata(baseDir, type)
105 version = packager.getBuildVersion(baseDir, metadata, releaseBuild, 94 version = packager.getBuildVersion(baseDir, metadata, releaseBuild,
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 cmd = ['npm', 'run', '--silent', 'package-edge'] 177 cmd = ['npm', 'run', '--silent', 'package-edge']
189 178
190 subprocess.check_call(cmd, env=cmd_env, cwd=os.path.dirname(__file__)) 179 subprocess.check_call(cmd, env=cmd_env, cwd=os.path.dirname(__file__))
191 180
192 package = os.path.join(manifold_folder, 'package', 181 package = os.path.join(manifold_folder, 'package',
193 'edgeExtension.appx') 182 'edgeExtension.appx')
194 183
195 shutil.copyfile(package, outfile) 184 shutil.copyfile(package, outfile)
196 finally: 185 finally:
197 shutil.rmtree(tmp_dir, ignore_errors=True) 186 shutil.rmtree(tmp_dir, ignore_errors=True)
LEFTRIGHT

Powered by Google App Engine
This is Rietveld