def load(preferencesPath): prefXML= bDOM.link(preferencesPath) value= { 'exports': bDOM.extractTagTextByPath(prefXML, "exports"), 'dependencies': bDOM.extractTagTextByPath(prefXML, "dependencies"), 'scratch': bDOM.extractTagTextByPath(prefXML, "scratch"), 'domain': bDOM.extractTagTextByPath(prefXML, "domain"), 'author': bDOM.extractTagTextByPath(prefXML, "author"), 'email': bDOM.extractTagTextByPath(prefXML, "email"), 'company': bDOM.extractTagTextByPath(prefXML, "company"), 'untitled': bDOM.extractTagTextByPath(prefXML, "untitled"), 'base_url': bDOM.extractTagTextByPath(prefXML, "base_url"), } keyText= bDOM.extractTagTextByPath(prefXML, "key") if keyText: value['key']= bRSA.Key(keyText) else: value['key']= bRSA.Key(-512) # large enough to hash a sha512 bDOM.appendText(prefXML.documentElement, "\t") element= bDOM.appendElement(prefXML.documentElement, "key") bDOM.appendText(element, str(value['key'])) bDOM.appendText(prefXML.documentElement, "\n") prefFile= open(preferencesPath, 'w') prefXML.writexml(prefFile) prefFile.close() prefXML.unlink() return value
def load(preferencesPath): prefXML = bDOM.link(preferencesPath) value = { 'exports': bDOM.extractTagTextByPath(prefXML, "exports"), 'dependencies': bDOM.extractTagTextByPath(prefXML, "dependencies"), 'scratch': bDOM.extractTagTextByPath(prefXML, "scratch"), 'domain': bDOM.extractTagTextByPath(prefXML, "domain"), 'author': bDOM.extractTagTextByPath(prefXML, "author"), 'email': bDOM.extractTagTextByPath(prefXML, "email"), 'company': bDOM.extractTagTextByPath(prefXML, "company"), 'untitled': bDOM.extractTagTextByPath(prefXML, "untitled"), 'base_url': bDOM.extractTagTextByPath(prefXML, "base_url"), } keyText = bDOM.extractTagTextByPath(prefXML, "key") if keyText: value['key'] = bRSA.Key(keyText) else: value['key'] = bRSA.Key(-512) # large enough to hash a sha512 bDOM.appendText(prefXML.documentElement, "\t") element = bDOM.appendElement(prefXML.documentElement, "key") bDOM.appendText(element, str(value['key'])) bDOM.appendText(prefXML.documentElement, "\n") prefFile = open(preferencesPath, 'w') prefXML.writexml(prefFile) prefFile.close() prefXML.unlink() return value
def bumpVersion(self, bumpPhase= False): packageXML= bDOM.link(self.__path) version= bDOM.extractTagTextByPath(packageXML, 'version') if version != self.__contents['version']: print "WARNING: package version changed from ",self.__contents['version']," to ",version #print "version",version parts= bConstants.kVersionPattern.match(version) newVersion= parts.group(1)+"."+parts.group(2)+"." #print "newVersion",newVersion patchNumber= int(parts.group(3)) #print "patchNumber",patchNumber phase= parts.group(4) #print "phase",phase buildNumber= int(parts.group(5)) #print "buildNumber",buildNumber if bumpPhase and phase == bConstants.kBuildPhaseOrder[-1]: patchNumber+= 1 phase= bConstants.kBuildPhaseOrder[0] buildNumber= 0 elif bumpPhase and bConstants.kBuildPhaseOrder.find(phase) >= 0: phase= bConstants.kBuildPhaseOrder[bConstants.kBuildPhaseOrder.find(phase) + 1] buildNumber= 0 else: buildNumber+= 1 newVersion+= str(patchNumber)+phase+str(buildNumber) #print "newVersion",newVersion bDOM.setTagContentsByPath(packageXML, 'version', newVersion) #print "Updating ",self.__path packageFile= open(self.__path, 'w') packageXML.writexml(packageFile) packageFile.close() packageXML.unlink() self.__contents['version']= newVersion
def bumpVersion(self, bumpPhase=False): packageXML = bDOM.link(self.__path) version = bDOM.extractTagTextByPath(packageXML, 'version') if version != self.__contents['version']: print "WARNING: package version changed from ", self.__contents[ 'version'], " to ", version #print "version",version parts = bConstants.kVersionPattern.match(version) newVersion = parts.group(1) + "." + parts.group(2) + "." #print "newVersion",newVersion patchNumber = int(parts.group(3)) #print "patchNumber",patchNumber phase = parts.group(4) #print "phase",phase buildNumber = int(parts.group(5)) #print "buildNumber",buildNumber if bumpPhase and phase == bConstants.kBuildPhaseOrder[-1]: patchNumber += 1 phase = bConstants.kBuildPhaseOrder[0] buildNumber = 0 elif bumpPhase and bConstants.kBuildPhaseOrder.find(phase) >= 0: phase = bConstants.kBuildPhaseOrder[ bConstants.kBuildPhaseOrder.find(phase) + 1] buildNumber = 0 else: buildNumber += 1 newVersion += str(patchNumber) + phase + str(buildNumber) #print "newVersion",newVersion bDOM.setTagContentsByPath(packageXML, 'version', newVersion) #print "Updating ",self.__path packageFile = open(self.__path, 'w') packageXML.writexml(packageFile) packageFile.close() packageXML.unlink() self.__contents['version'] = newVersion
def getSignatures(signatureFile): dom= bDOM.link(signatureFile) key= dom.documentElement.getAttribute('key') signatures= [] for signature in dom.documentElement.getElementsByTagName('signed'): algorithm= signature.getAttribute('algorithm') value= bDOM.extractTextFromTagContents(signature) isText= signature.hasAttribute('text') and signature.getAttribute('text')[0].lower() == 't' signatures.append( (algorithm, value, isText) ) dom.unlink() return (key, signatures)
def upgrade(self, dependency, upgraded): #print "Upgrading from ",dependency,"to",upgraded packageXML= bDOM.link(self.__path) dependencyList= bDOM.findTagByPath(packageXML, "dependencies") if dependencyList: for dep in dependencyList.getElementsByTagName("dependency"): location= bDOM.extractTextFromTagContents(dep) depID= bID.ID(location) if depID.equals(dependency): bDOM.changeTagContents(packageXML, dep, upgraded.filename()) break packageFile= open(self.__path, 'w') packageXML.writexml(packageFile) packageFile.close() packageXML.unlink()
def upgrade(self, dependency, upgraded): #print "Upgrading from ",dependency,"to",upgraded packageXML = bDOM.link(self.__path) dependencyList = bDOM.findTagByPath(packageXML, "dependencies") if dependencyList: for dep in dependencyList.getElementsByTagName("dependency"): location = bDOM.extractTextFromTagContents(dep) depID = bID.ID(location) if depID.equals(dependency): bDOM.changeTagContents(packageXML, dep, upgraded.filename()) break packageFile = open(self.__path, 'w') packageXML.writexml(packageFile) packageFile.close() packageXML.unlink()
def __init__(self, contents): self.__path = None if os.path.isfile(contents): self.__path = contents packageXML = bDOM.link(contents) self.__contents = { 'name': bDOM.extractTagTextByPath(packageXML, "name"), 'domain': bDOM.extractTagTextByPath(packageXML, "domain"), 'author': bDOM.extractTagTextByPath(packageXML, "author"), 'email': bDOM.extractTagTextByPath(packageXML, "email"), 'version': bDOM.extractTagTextByPath(packageXML, "version"), 'company': bDOM.extractTagTextByPath(packageXML, "company"), 'changes': bDOM.extractTagTextByPath(packageXML, "changes"), 'todo': bDOM.extractTagTextByPath(packageXML, "todo"), 'changepat': bDOM.extractTagTextByPath(packageXML, "changepat"), 'filterExtensions': [], 'filterPaths': [], 'filterNames': [], 'errors': [], 'warnings': [], 'dependencies': [], 'previous': [], } parseXMLListOfExports(packageXML, "dependencies", "dependency", self.__contents['dependencies'], self.__contents['warnings']) parseXMLListOfExports(packageXML, "previous", "version", self.__contents['previous'], self.__contents['warnings']) if self.__contents['domain'] and self.__contents['name']: self.__contents['full_name'] = self.__contents[ 'domain'] + "_" + self.__contents['name'] else: self.__contents['full_name'] = None for filter in packageXML.getElementsByTagName('filter'): ext = filter.getAttribute('extension') if ext: self.__contents['filterExtensions'].append(ext) path = filter.getAttribute('path') if path: self.__contents['filterPaths'].append(path) name = filter.getAttribute('name') if name: self.__contents['filterNames'].append(name) packageXML.unlink()
def addPrevious(self, identifier): packageXML= bDOM.link(self.__path) previousList= bDOM.findTagByPath(packageXML, "previous") if not previousList: previousList= packageXML.createElement('previous') previousList.appendChild(packageXML.createTextNode("\n\t")) packageXML.documentElement.appendChild(packageXML.createTextNode("\t")) packageXML.documentElement.appendChild(previousList) packageXML.documentElement.appendChild(packageXML.createTextNode("\n")) nextVersion= packageXML.createElement('version') versionText= packageXML.createTextNode(identifier.filename()) nextVersion.appendChild(versionText) previousList.appendChild(packageXML.createTextNode("\t")) previousList.appendChild(nextVersion) previousList.appendChild(packageXML.createTextNode("\n\t")) packageFile= open(self.__path, 'w') packageXML.writexml(packageFile) packageFile.close() packageXML.unlink()
def addPrevious(self, identifier): packageXML = bDOM.link(self.__path) previousList = bDOM.findTagByPath(packageXML, "previous") if not previousList: previousList = packageXML.createElement('previous') previousList.appendChild(packageXML.createTextNode("\n\t")) packageXML.documentElement.appendChild( packageXML.createTextNode("\t")) packageXML.documentElement.appendChild(previousList) packageXML.documentElement.appendChild( packageXML.createTextNode("\n")) nextVersion = packageXML.createElement('version') versionText = packageXML.createTextNode(identifier.filename()) nextVersion.appendChild(versionText) previousList.appendChild(packageXML.createTextNode("\t")) previousList.appendChild(nextVersion) previousList.appendChild(packageXML.createTextNode("\n\t")) packageFile = open(self.__path, 'w') packageXML.writexml(packageFile) packageFile.close() packageXML.unlink()
def __init__(self, contents): self.__path= None if os.path.isfile(contents): self.__path= contents packageXML= bDOM.link(contents) self.__contents= { 'name': bDOM.extractTagTextByPath(packageXML, "name"), 'domain': bDOM.extractTagTextByPath(packageXML, "domain"), 'author': bDOM.extractTagTextByPath(packageXML, "author"), 'email': bDOM.extractTagTextByPath(packageXML, "email"), 'version': bDOM.extractTagTextByPath(packageXML, "version"), 'company': bDOM.extractTagTextByPath(packageXML, "company"), 'changes': bDOM.extractTagTextByPath(packageXML, "changes"), 'todo': bDOM.extractTagTextByPath(packageXML, "todo"), 'changepat': bDOM.extractTagTextByPath(packageXML, "changepat"), 'filterExtensions': [], 'filterPaths': [], 'filterNames': [], 'errors': [], 'warnings': [], 'dependencies': [], 'previous': [], } parseXMLListOfExports(packageXML, "dependencies", "dependency", self.__contents['dependencies'], self.__contents['warnings']) parseXMLListOfExports(packageXML, "previous", "version", self.__contents['previous'], self.__contents['warnings']) if self.__contents['domain'] and self.__contents['name']: self.__contents['full_name']= self.__contents['domain']+"_"+self.__contents['name'] else: self.__contents['full_name']= None for filter in packageXML.getElementsByTagName('filter'): ext= filter.getAttribute('extension') if ext: self.__contents['filterExtensions'].append(ext) path= filter.getAttribute('path') if path: self.__contents['filterPaths'].append(path) name= filter.getAttribute('name') if name: self.__contents['filterNames'].append(name) packageXML.unlink()