| Left: | ||
| Right: |
| LEFT | RIGHT |
|---|---|
| 1 # coding: utf-8 | 1 # coding: utf-8 |
| 2 | 2 |
| 3 # This file is part of the Adblock Plus web scripts, | 3 # This file is part of the Adblock Plus web scripts, |
| 4 # Copyright (C) 2006-2014 Eyeo GmbH | 4 # Copyright (C) 2006-2014 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, |
| 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 # GNU General Public License for more details. | 13 # GNU General Public License for more details. |
| 14 # | 14 # |
| 15 # You should have received a copy of the GNU General Public License | 15 # You should have received a copy of the GNU General Public License |
| 16 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 16 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| 17 | 17 |
| 18 import re, os, subprocess | 18 import re |
|
Wladimir Palant
2014/05/26 10:54:57
One import per line?
Sebastian Noack
2014/05/26 12:04:53
Done.
| |
| 19 import os | |
| 20 import subprocess | |
| 19 from ConfigParser import SafeConfigParser, NoOptionError | 21 from ConfigParser import SafeConfigParser, NoOptionError |
| 20 from StringIO import StringIO | 22 from StringIO import StringIO |
| 21 from sitescripts.utils import get_config | 23 from sitescripts.utils import get_config |
| 22 | 24 |
| 23 def compareVersionParts(part1, part2): | 25 def compareVersionParts(part1, part2): |
| 24 def convertInt(value, default): | 26 def convertInt(value, default): |
| 25 try: | 27 try: |
| 26 return int(value) | 28 return int(value) |
| 27 except ValueError: | 29 except ValueError: |
| 28 return default | 30 return default |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 83 return result | 85 return result |
| 84 return 0 | 86 return 0 |
| 85 | 87 |
| 86 class Configuration(object): | 88 class Configuration(object): |
| 87 """ | 89 """ |
| 88 This class represents the configuration settings for a single repository. | 90 This class represents the configuration settings for a single repository. |
| 89 Some of these properties come from the nightly config file and can be | 91 Some of these properties come from the nightly config file and can be |
| 90 changed (latestRevision), others come from the global config and are | 92 changed (latestRevision), others come from the global config and are |
| 91 read-only (repository, repositoryName, nightliesDirectory). | 93 read-only (repository, repositoryName, nightliesDirectory). |
| 92 """ | 94 """ |
| 93 | 95 def _defineProperty(name, local=False, type='', default=None): |
| 94 def _defineGlobalProperty(key): | 96 def getter(self): |
| 95 """ | 97 method = getattr(self.config, 'get' + type) |
| 96 Creates a property corresponding with a key in the config file | 98 key = '%s_%s' % (self.repositoryName, name) if local else name |
| 97 """ | 99 |
| 98 return property(lambda self: self.config.get('extensions', key)) | |
| 99 | |
| 100 def _defineLocalProperty(key, default = None): | |
| 101 """ | |
| 102 Creates a property corresponding with a repository-specific key in the con fig file | |
| 103 """ | |
| 104 def getLocalProperty(self): | |
| 105 try: | 100 try: |
| 106 return self.config.get('extensions', self.repositoryName + '_' + key) | 101 return method('extensions', key) |
| 107 except NoOptionError, e: | 102 except NoOptionError: |
| 108 if default != None: | 103 if default is None: |
| 109 return default | 104 raise |
| 110 else: | 105 return default |
| 111 raise e | 106 |
| 112 return property(getLocalProperty) | 107 return property(getter) |
| 113 | 108 |
| 114 def _defineNightlyProperty(key): | 109 def _defineNightlyProperty(key): |
| 115 """ | 110 """ |
| 116 Creates a property corresponding with a key in the nightly config file | 111 Creates a property corresponding with a key in the nightly config file |
| 117 """ | 112 """ |
| 118 return property(lambda self: self.nightlyConfig.get(self.repositoryName, key ), | 113 return property(lambda self: self.nightlyConfig.get(self.repositoryName, key ), |
| 119 lambda self, value: self.nightlyConfig.set(self.repositoryNa me, key, value)) | 114 lambda self, value: self.nightlyConfig.set(self.repositoryNa me, key, value)) |
| 120 | 115 |
| 121 config = None | 116 config = None |
| 122 nightlyConfig = None | 117 nightlyConfig = None |
| 123 repositoryName = None | 118 repositoryName = None |
| 124 repository = None | 119 repository = None |
| 125 | 120 |
| 126 buildRepository = _defineGlobalProperty('buildRepository') | 121 buildRepository = _defineProperty('buildRepository') |
| 127 nightliesDirectory = _defineGlobalProperty('nightliesDirectory') | 122 nightliesDirectory = _defineProperty('nightliesDirectory') |
| 128 nightliesURL = _defineGlobalProperty('nightliesURL') | 123 nightliesURL = _defineProperty('nightliesURL') |
| 129 downloadsRepo = _defineGlobalProperty('downloadsRepo') | 124 downloadsRepo = _defineProperty('downloadsRepo') |
| 130 downloadsURL = _defineGlobalProperty('downloadsURL') | 125 downloadsURL = _defineProperty('downloadsURL') |
| 131 docsDirectory = _defineGlobalProperty('docsDirectory') | 126 docsDirectory = _defineProperty('docsDirectory') |
| 132 signtool = _defineGlobalProperty('signtool') | 127 signtool = _defineProperty('signtool') |
| 133 certname = _defineGlobalProperty('signtool_certname') | 128 certname = _defineProperty('signtool_certname') |
| 134 dbdir = _defineGlobalProperty('signtool_dbdir') | 129 dbdir = _defineProperty('signtool_dbdir') |
| 135 dbpass = _defineGlobalProperty('signtool_dbpass') | 130 dbpass = _defineProperty('signtool_dbpass') |
| 136 padDirectory = _defineGlobalProperty('padDirectory') | 131 padDirectory = _defineProperty('padDirectory') |
| 137 padURL = _defineGlobalProperty('padURL') | 132 padURL = _defineProperty('padURL') |
| 138 | 133 padTemplate = _defineProperty('padTemplate') |
| 139 keyFile = _defineLocalProperty('key', '') | 134 |
| 140 name = _defineLocalProperty('name') | 135 keyFile = _defineProperty('key', local=True, default='') |
| 141 galleryID = _defineLocalProperty('galleryID', '') | 136 name = _defineProperty('name', local=True) |
| 142 devbuildGalleryID = _defineLocalProperty('devbuildGalleryID', '') | 137 galleryID = _defineProperty('galleryID', local=True, default='') |
| 143 downloadPage = _defineLocalProperty('downloadPage', '') | 138 devbuildGalleryID = _defineProperty('devbuildGalleryID', local=True, default=' ') |
| 144 experimental = _defineLocalProperty('experimental', '') | 139 downloadPage = _defineProperty('downloadPage', local=True, default='') |
| 145 clientID = _defineLocalProperty('clientID', '') | 140 experimental = _defineProperty('experimental', local=True, default='') |
| 146 clientSecret = _defineLocalProperty('clientSecret', '') | 141 clientID = _defineProperty('clientID', local=True, default='') |
| 147 refreshToken = _defineLocalProperty('refreshToken', '') | 142 clientSecret = _defineProperty('clientSecret', local=True, default='') |
| 148 padTemplate = _defineLocalProperty('padTemplate') | 143 refreshToken = _defineProperty('refreshToken', local=True, default='') |
| 144 pad = _defineProperty('pad', local=True, type='boolean', default=False) | |
| 149 | 145 |
| 150 latestRevision = _defineNightlyProperty('latestRevision') | 146 latestRevision = _defineNightlyProperty('latestRevision') |
| 151 | 147 |
| 152 def __init__(self, config, nightlyConfig, repositoryName, repository): | 148 def __init__(self, config, nightlyConfig, repositoryName, repository): |
| 153 """ | 149 """ |
| 154 Creates a new Configuration instance that is bound to a particular | 150 Creates a new Configuration instance that is bound to a particular |
| 155 repository. | 151 repository. |
| 156 """ | 152 """ |
| 157 | 153 |
| 158 self.repositoryName = repositoryName | 154 self.repositoryName = repositoryName |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 253 except M2Crypto.X509.X509Error: | 249 except M2Crypto.X509.X509Error: |
| 254 raise Exception('No safari developer certificate found in chain') | 250 raise Exception('No safari developer certificate found in chain') |
| 255 | 251 |
| 256 subject = cert.get_subject() | 252 subject = cert.get_subject() |
| 257 for entry in subject.get_entries_by_nid(subject.nid['CN']): | 253 for entry in subject.get_entries_by_nid(subject.nid['CN']): |
| 258 m = re.match(r'Safari Developer: \((.*?)\)', entry.get_data().as_text()) | 254 m = re.match(r'Safari Developer: \((.*?)\)', entry.get_data().as_text()) |
| 259 if m: | 255 if m: |
| 260 return m.group(1) | 256 return m.group(1) |
| 261 finally: | 257 finally: |
| 262 bio.close() | 258 bio.close() |
| LEFT | RIGHT |