OLD | NEW |
1 # coding: utf-8 | 1 # coding: utf-8 |
2 | 2 |
3 # This file is part of the Adblock Plus build tools, | 3 # This file is part of the Adblock Plus build tools, |
4 # Copyright (C) 2006-2012 Eyeo GmbH | 4 # Copyright (C) 2006-2012 Eyeo GmbH |
5 # | 5 # |
6 # Adblock Plus is free software: you can redistribute it and/or modify | 6 # Adblock Plus is free software: you can redistribute it and/or modify |
7 # it under the terms of the GNU General Public License version 3 as | 7 # it under the terms of the GNU General Public License version 3 as |
8 # published by the Free Software Foundation. | 8 # published by the Free Software Foundation. |
9 # | 9 # |
10 # Adblock Plus is distributed in the hope that it will be useful, | 10 # Adblock Plus is distributed in the hope that it will be useful, |
(...skipping 27 matching lines...) Expand all Loading... |
38 (result, dummy) = subprocess.Popen(['hg', 'id', '-R', baseDir, '-n'], stdout
=subprocess.PIPE).communicate() | 38 (result, dummy) = subprocess.Popen(['hg', 'id', '-R', baseDir, '-n'], stdout
=subprocess.PIPE).communicate() |
39 return re.sub(r'\D', '', result) | 39 return re.sub(r'\D', '', result) |
40 except Exception: | 40 except Exception: |
41 return '0' | 41 return '0' |
42 | 42 |
43 def getBuildVersion(baseDir, metadata, releaseBuild, buildNum=None): | 43 def getBuildVersion(baseDir, metadata, releaseBuild, buildNum=None): |
44 version = metadata.get('general', 'version') | 44 version = metadata.get('general', 'version') |
45 if not releaseBuild: | 45 if not releaseBuild: |
46 if buildNum == None: | 46 if buildNum == None: |
47 buildNum = getBuildNum(baseDir) | 47 buildNum = getBuildNum(baseDir) |
| 48 buildNum = str(buildNum) |
48 if len(buildNum) > 0: | 49 if len(buildNum) > 0: |
49 if re.search(r'(^|\.)\d+$', version): | 50 if re.search(r'(^|\.)\d+$', version): |
50 # Numerical version number - need to fill up with zeros to have three | 51 # Numerical version number - need to fill up with zeros to have three |
51 # version components. | 52 # version components. |
52 while version.count('.') < 2: | 53 while version.count('.') < 2: |
53 version += '.0' | 54 version += '.0' |
54 version += '.' + buildNum | 55 version += '.' + buildNum |
55 return version | 56 return version |
56 | 57 |
57 def getTemplate(template, autoEscape=False): | 58 def getTemplate(template, autoEscape=False): |
(...skipping 26 matching lines...) Expand all Loading... |
84 name = relpath + ('/' if relpath != '' else '') + file | 85 name = relpath + ('/' if relpath != '' else '') + file |
85 if (skip == None or file not in skip) and self.isIncluded(name): | 86 if (skip == None or file not in skip) and self.isIncluded(name): |
86 self.read(os.path.join(path, file), name) | 87 self.read(os.path.join(path, file), name) |
87 else: | 88 else: |
88 file = open(path, 'rb') | 89 file = open(path, 'rb') |
89 if relpath in self: | 90 if relpath in self: |
90 print >>sys.stderr, 'Warning: File %s defined multiple times' % relpath | 91 print >>sys.stderr, 'Warning: File %s defined multiple times' % relpath |
91 self[relpath] = file.read() | 92 self[relpath] = file.read() |
92 file.close() | 93 file.close() |
93 | 94 |
94 def readMappedFiles(self, baseDir, mappings): | 95 def readMappedFiles(self, mappings): |
95 for target, source in mappings: | 96 for item in mappings: |
| 97 target, source = item |
| 98 |
96 # Make sure the file is inside an included directory | 99 # Make sure the file is inside an included directory |
97 if '/' in target and not self.isIncluded(target): | 100 if '/' in target and not self.isIncluded(target): |
98 continue | 101 continue |
99 parts = source.split('/') | 102 parts = source.split('/') |
100 path = os.path.join(baseDir, *parts) | 103 path = os.path.join(os.path.dirname(item.source), *parts) |
101 if os.path.exists(path): | 104 if os.path.exists(path): |
102 self.read(path, target) | 105 self.read(path, target) |
103 else: | 106 else: |
104 print >>sys.stderr, 'Warning: Mapped file %s doesn\'t exist' % source | 107 print >>sys.stderr, 'Warning: Mapped file %s doesn\'t exist' % source |
105 | 108 |
106 def zip(self, outFile, sortKey=None): | 109 def zip(self, outFile, sortKey=None): |
107 zip = zipfile.ZipFile(outFile, 'w', zipfile.ZIP_DEFLATED) | 110 zip = zipfile.ZipFile(outFile, 'w', zipfile.ZIP_DEFLATED) |
108 names = self.keys() | 111 names = self.keys() |
109 names.sort(key=sortKey) | 112 names.sort(key=sortKey) |
110 for name in names: | 113 for name in names: |
111 data = self[name] | 114 data = self[name] |
112 if self.process: | 115 if self.process: |
113 data = self.process(name, data) | 116 data = self.process(name, data) |
114 zip.writestr(name, data) | 117 zip.writestr(name, data) |
115 zip.close() | 118 zip.close() |
116 | 119 |
117 def zipToString(self, sortKey=None): | 120 def zipToString(self, sortKey=None): |
118 buffer = StringIO() | 121 buffer = StringIO() |
119 self.zip(buffer, sortKey=sortKey) | 122 self.zip(buffer, sortKey=sortKey) |
120 return buffer.getvalue() | 123 return buffer.getvalue() |
OLD | NEW |