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 # Note: These are the base functions common to all packagers, the actual | 5 # Note: These are the base functions common to all packagers, the actual |
6 # packagers are implemented in packagerGecko and packagerChrome. | 6 # packagers are implemented in packagerGecko and packagerChrome. |
7 | 7 |
8 import sys | 8 import sys |
9 import os | 9 import os |
10 import re | 10 import re |
11 import codecs | |
12 import subprocess | 11 import subprocess |
13 import json | 12 import json |
14 import zipfile | 13 import zipfile |
15 from StringIO import StringIO | 14 from StringIO import StringIO |
16 from chainedconfigparser import ChainedConfigParser | 15 from chainedconfigparser import ChainedConfigParser |
17 | 16 |
18 import buildtools | 17 import buildtools |
19 | 18 |
20 | 19 |
21 def getDefaultFileName(metadata, version, ext): | 20 def getDefaultFileName(metadata, version, ext): |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 # version components. | 62 # version components. |
64 while version.count('.') < 2: | 63 while version.count('.') < 2: |
65 version += '.0' | 64 version += '.0' |
66 version += '.' + buildNum | 65 version += '.' + buildNum |
67 return version | 66 return version |
68 | 67 |
69 | 68 |
70 def getTemplate(template, autoEscape=False): | 69 def getTemplate(template, autoEscape=False): |
71 import jinja2 | 70 import jinja2 |
72 | 71 |
73 templatePath = buildtools.__path__[0] | 72 template_path = os.path.join(buildtools.__path__[0], 'templates') |
| 73 loader = jinja2.FileSystemLoader(template_path) |
74 if autoEscape: | 74 if autoEscape: |
75 env = jinja2.Environment(loader=jinja2.FileSystemLoader(templatePath), a
utoescape=True) | 75 env = jinja2.Environment(loader=loader, autoescape=True) |
76 else: | 76 else: |
77 env = jinja2.Environment(loader=jinja2.FileSystemLoader(templatePath)) | 77 env = jinja2.Environment(loader=loader) |
78 env.filters.update({'json': json.dumps}) | 78 env.filters.update({'json': json.dumps}) |
79 return env.get_template(template) | 79 return env.get_template(template) |
80 | 80 |
81 | 81 |
82 class Files(dict): | 82 class Files(dict): |
83 def __init__(self, includedFiles, ignoredFiles, process=None): | 83 def __init__(self, includedFiles, ignoredFiles, process=None): |
84 self.includedFiles = includedFiles | 84 self.includedFiles = includedFiles |
85 self.ignoredFiles = ignoredFiles | 85 self.ignoredFiles = ignoredFiles |
86 self.process = process | 86 self.process = process |
87 | 87 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 | 127 |
128 def preprocess(self, filenames, params={}): | 128 def preprocess(self, filenames, params={}): |
129 import jinja2 | 129 import jinja2 |
130 env = jinja2.Environment() | 130 env = jinja2.Environment() |
131 | 131 |
132 for filename in filenames: | 132 for filename in filenames: |
133 env.autoescape = os.path.splitext(filename)[1].lower() in ('.html',
'.xml') | 133 env.autoescape = os.path.splitext(filename)[1].lower() in ('.html',
'.xml') |
134 template = env.from_string(self[filename].decode('utf-8')) | 134 template = env.from_string(self[filename].decode('utf-8')) |
135 self[filename] = template.render(params).encode('utf-8') | 135 self[filename] = template.render(params).encode('utf-8') |
136 | 136 |
137 def zip(self, outFile, sortKey=None): | 137 def zip(self, outFile, sortKey=None, compress=True): |
138 zip = zipfile.ZipFile(outFile, 'w', zipfile.ZIP_DEFLATED) | 138 compression = zipfile.ZIP_DEFLATED if compress else zipfile.ZIP_STORED |
139 names = self.keys() | 139 zf = zipfile.ZipFile(outFile, 'w', compression) |
140 names.sort(key=sortKey) | 140 for name in sorted(self, key=sortKey): |
141 for name in names: | 141 zf.writestr(name, self[name]) |
142 zip.writestr(name, self[name]) | 142 zf.close() |
143 zip.close() | |
144 | 143 |
145 def zipToString(self, sortKey=None): | 144 def zipToString(self, sortKey=None): |
146 buffer = StringIO() | 145 buffer = StringIO() |
147 self.zip(buffer, sortKey=sortKey) | 146 self.zip(buffer, sortKey=sortKey) |
148 return buffer.getvalue() | 147 return buffer.getvalue() |
OLD | NEW |