| Left: | ||
| Right: |
| LEFT | RIGHT |
|---|---|
| 1 # coding: utf-8 | 1 # coding: utf-8 |
| 2 | 2 |
| 3 # This Source Code Form is subject to the terms of the Mozilla Public | 3 # This Source Code Form is subject to the terms of the Mozilla Public |
| 4 # License, v. 2.0. If a copy of the MPL was not distributed with this | 4 # License, v. 2.0. If a copy of the MPL was not distributed with this |
| 5 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 5 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| 6 | 6 |
| 7 import os | 7 import os |
| 8 import sys | 8 import sys |
| 9 import re | 9 import re |
| 10 import hashlib | 10 import hashlib |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 57 baseDir = params['baseDir'] | 57 baseDir = params['baseDir'] |
| 58 for file in os.listdir(baseDir): | 58 for file in os.listdir(baseDir): |
| 59 if file.endswith('.js') or file.endswith('.xml'): | 59 if file.endswith('.js') or file.endswith('.xml'): |
| 60 result.add(file) | 60 result.add(file) |
| 61 return result | 61 return result |
| 62 | 62 |
| 63 def getIgnoredFiles(params): | 63 def getIgnoredFiles(params): |
| 64 return {'.incomplete', 'meta.properties'} | 64 return {'.incomplete', 'meta.properties'} |
| 65 | 65 |
| 66 def archive_path(path, baseDir): | 66 def archive_path(path, baseDir): |
| 67 return '/'.join(os.path.relpath(path, baseDir).split(os.sep)) | 67 return '/'.join(os.path.split(os.path.relpath(path, baseDir))) |
|
Sebastian Noack
2014/12/17 08:18:12
Nit: x.split(os.sep) -> os.path.split(x)
Wladimir Palant
2014/12/17 13:26:04
Done.
| |
| 68 | 68 |
| 69 def isValidLocale(localesDir, dir, includeIncomplete=False): | 69 def isValidLocale(localesDir, dir, includeIncomplete=False): |
| 70 if re.search(r'[^\w\-]', dir): | 70 if re.search(r'[^\w\-]', dir): |
| 71 return False | 71 return False |
| 72 curLocaleDir = os.path.join(localesDir, dir) | 72 curLocaleDir = os.path.join(localesDir, dir) |
| 73 if not os.path.isdir(curLocaleDir): | 73 if not os.path.isdir(curLocaleDir): |
| 74 return False | 74 return False |
| 75 if len(os.listdir(curLocaleDir)) == 0: | 75 if len(os.listdir(curLocaleDir)) == 0: |
| 76 return False | 76 return False |
| 77 if not includeIncomplete and os.path.exists(os.path.join(localesDir, dir, '.in complete')): | 77 if not includeIncomplete and os.path.exists(os.path.join(localesDir, dir, '.in complete')): |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 158 if not params['metadata'].has_section(SECTION): | 158 if not params['metadata'].has_section(SECTION): |
| 159 return | 159 return |
| 160 | 160 |
| 161 import localeTools | 161 import localeTools |
| 162 | 162 |
| 163 for locale in params['locales']: | 163 for locale in params['locales']: |
| 164 for item in params['metadata'].items(SECTION): | 164 for item in params['metadata'].items(SECTION): |
| 165 path, keys = item | 165 path, keys = item |
| 166 parts = [locale if p == '*' else p for p in path.split('/')] | 166 parts = [locale if p == '*' else p for p in path.split('/')] |
| 167 source = os.path.join(os.path.dirname(item.source), *parts) | 167 source = os.path.join(os.path.dirname(item.source), *parts) |
| 168 if not os.path.exists(source): | 168 if not os.path.exists(source): |
|
Sebastian Noack
2014/12/17 08:18:12
Nit: I'd prefer to catch the IOError when openenin
Wladimir Palant
2014/12/17 13:26:04
Sure, but that's not a scenario where race conditi
Sebastian Noack
2014/12/17 13:59:07
Theoretically, the contents of the file system can
| |
| 169 continue | 169 continue |
| 170 | 170 |
| 171 with io.open(source, 'r', encoding='utf-8') as handle: | 171 with io.open(source, 'r', encoding='utf-8') as handle: |
| 172 data = json.load(handle) | 172 data = json.load(handle) |
| 173 | 173 |
| 174 target_name = os.path.splitext(os.path.basename(source))[0] + '.properties ' | 174 target_name = os.path.splitext(os.path.basename(source))[0] + '.properties ' |
| 175 target = archive_path(os.path.join(getLocalesDir(params['baseDir']), local e, target_name), params['baseDir']) | 175 target = archive_path(os.path.join(getLocalesDir(params['baseDir']), local e, target_name), params['baseDir']) |
| 176 | 176 |
| 177 files[target] = '' | 177 files[target] = '' |
| 178 for key, value in sorted(data.items()): | 178 for key, value in sorted(data.items()): |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 354 if metadata.has_section('preprocess'): | 354 if metadata.has_section('preprocess'): |
| 355 files.preprocess([f for f, _ in metadata.items('preprocess')]) | 355 files.preprocess([f for f, _ in metadata.items('preprocess')]) |
| 356 if keyFile: | 356 if keyFile: |
| 357 signFiles(files, keyFile) | 357 signFiles(files, keyFile) |
| 358 files.zip(outFile, sortKey=lambda x: '!' if x == 'META-INF/zigbert.rsa' else x ) | 358 files.zip(outFile, sortKey=lambda x: '!' if x == 'META-INF/zigbert.rsa' else x ) |
| 359 | 359 |
| 360 def autoInstall(baseDir, type, host, port, multicompartment=False): | 360 def autoInstall(baseDir, type, host, port, multicompartment=False): |
| 361 fileBuffer = StringIO() | 361 fileBuffer = StringIO() |
| 362 createBuild(baseDir, type=type, outFile=fileBuffer, multicompartment=multicomp artment) | 362 createBuild(baseDir, type=type, outFile=fileBuffer, multicompartment=multicomp artment) |
| 363 urllib.urlopen('http://%s:%s/' % (host, port), data=fileBuffer.getvalue()) | 363 urllib.urlopen('http://%s:%s/' % (host, port), data=fileBuffer.getvalue()) |
| LEFT | RIGHT |