def run(baseDir, downloadsRepo, buildtoolsRepo): baseExtDir = packagerKMeleon.getBaseExtensionDir(baseDir) # Read extension name, version and branch name locales = packager.readLocaleMetadata(baseExtDir, [packager.defaultLocale]) extensionName = locales[packager.defaultLocale]['name'] + ' for K-Meleon' metadata = packager.readMetadata(baseExtDir) metadata.read(packager.getMetadataPath(baseDir)) branchName = metadata.get('general', 'branchname') version = metadata.get('general', 'version') # Tag our source repository subprocess.Popen(['hg', 'tag', '-R', baseDir, '-f', version]).communicate() # Create a release build buildPath = os.path.join(downloadsRepo, packager.getDefaultFileName(baseDir, metadata, version, 'zip')) packagerKMeleon.createBuild(baseDir, outFile=buildPath, releaseBuild=True) # Create source archive archivePath = os.path.splitext(buildPath)[0] + '-source.tgz' archiveHandle = open(archivePath, 'wb') archive = tarfile.open(fileobj=archiveHandle, name=os.path.basename(archivePath), mode='w:gz') (data, dummy) = subprocess.Popen(['hg', 'archive', '-R', baseDir, '-t', 'tar', '-X', os.path.join(baseDir, '.hgtags'), '-'], stdout=subprocess.PIPE).communicate() repoArchive = tarfile.open(fileobj=StringIO(data), mode='r:') for fileInfo in repoArchive: fileData = repoArchive.extractfile(fileInfo) fileInfo.name = re.sub(r'^[^/]+/', '', fileInfo.name) archive.addfile(fileInfo, fileData) repoArchive.close() (data, dummy) = subprocess.Popen(['hg', 'archive', '-R', buildtoolsRepo, '-t', 'tar', '-X', os.path.join(buildtoolsRepo, '.hgtags'), '-'], stdout=subprocess.PIPE).communicate() repoArchive = tarfile.open(fileobj=StringIO(data), mode='r:') for fileInfo in repoArchive: fileData = repoArchive.extractfile(fileInfo) fileInfo.name = re.sub(r'^[^/]+/', 'buildtools/', fileInfo.name) archive.addfile(fileInfo, fileData) (data, dummy) = subprocess.Popen(['hg', 'archive', '-R', baseExtDir, '-t', 'tar', '-X', os.path.join(baseExtDir, '.hgtags'), '-'], stdout=subprocess.PIPE).communicate() repoArchive = tarfile.open(fileobj=StringIO(data), mode='r:') for fileInfo in repoArchive: fileData = repoArchive.extractfile(fileInfo) fileInfo.name = re.sub(r'^[^/]+/', '%s/' % os.path.basename(baseExtDir), fileInfo.name) archive.addfile(fileInfo, fileData) repoArchive.close() archive.close() archiveHandle.close() # Now add the downloads, commit and tag the downloads repo tagName = '%s_%s_RELEASE' % (branchName, version.replace('.', '_')) subprocess.Popen(['hg', 'add', '-R', downloadsRepo, buildPath, archivePath]).communicate() subprocess.Popen(['hg', 'commit', '-R', downloadsRepo, '-m', 'Releasing %s %s' % (extensionName, version)]).communicate() subprocess.Popen(['hg', 'tag', '-R', downloadsRepo, '-f', tagName]).communicate() # Tag buildtools repository as well subprocess.Popen(['hg', 'tag', '-R', buildtoolsRepo, '-f', tagName]).communicate() # Push all changes subprocess.Popen(['hg', 'push', '-R', baseDir]).communicate() subprocess.Popen(['hg', 'push', '-R', downloadsRepo]).communicate() subprocess.Popen(['hg', 'push', '-R', buildtoolsRepo]).communicate()
def showDescriptions(baseDir, scriptName, opts, args, type): locales = None for option, value in opts: if option in ('-l', '--locales'): locales = value.split(',') import buildtools.packager as packager if locales == None: locales = packager.getLocales(baseDir) elif locales == 'all': locales = packager.getLocales(baseDir, True) data = packager.readLocaleMetadata(baseDir, locales) localeCodes = data.keys() localeCodes.sort() for localeCode in localeCodes: locale = data[localeCode] print ('''%s %s %s %s %s ''' % (localeCode, locale['name'] if 'name' in locale else 'None', locale['description'] if 'description' in locale else 'None', locale['description.short'] if 'description.short' in locale else 'None', locale['description.long'] if 'description.long' in locale else 'None', )).encode('utf-8')
def createManifest(baseExtDir, params): localeMetadata = packager.readLocaleMetadata(baseExtDir, params['locales']) manifest = {} metadata = params['metadata'] manifest['id'] = metadata.get('general', 'id') manifest['version'] = metadata.get('general', 'version') manifest['version'] = params['version'] manifest['name'] = localeMetadata[packager.defaultLocale]['name'] manifest['description'] = localeMetadata[packager.defaultLocale]['description'] manifest['creator'] = metadata.get('general', 'author') manifest['homepage'] = metadata.get('homepage', 'default') if metadata.has_section('contributors'): manifest['contributors'] = map(lambda item: item[1], metadata.items('contributors')) manifest['contributors'].sort() else: manifest['contributors'] = [] manifest['translators'] = packager.getTranslators(localeMetadata) return 'var EXPORTED_SYMBOLS = ["manifest"];\nvar manifest = ' + json.dumps(manifest)
def run(baseDir, version, keyFile, downloadsRepo, buildtoolsRepo): # Replace version number in metadata file "manually", ConfigParser will mess # up the order of lines. handle = open(packager.getMetadataPath(baseDir), 'rb') rawMetadata = handle.read() handle.close() versionRegExp = re.compile(r'^(\s*version\s*=\s*).*', re.I | re.M) rawMetadata = re.sub(versionRegExp, r'\g<1>%s' % version, rawMetadata) handle = open(packager.getMetadataPath(baseDir), 'wb') handle.write(rawMetadata) handle.close() # Read extension name and branch name locales = packager.readLocaleMetadata(baseDir, [packager.defaultLocale]) extensionName = locales[packager.defaultLocale]['name'] metadata = packager.readMetadata(baseDir) branchName = metadata.get('general', 'branchname') # Now commit the change and tag it subprocess.Popen(['hg', 'commit', '-R', baseDir, '-m', 'Releasing %s %s' % (extensionName, version)]).communicate() subprocess.Popen(['hg', 'tag', '-R', baseDir, '-f', version]).communicate() # Create a release build buildPath = os.path.join(downloadsRepo, packager.getDefaultFileName(baseDir, metadata, version)) packager.createBuild(baseDir, outFile=buildPath, releaseBuild=True, keyFile=keyFile) # Create source archive archivePath = os.path.splitext(buildPath)[0] + '-source.tgz' archiveHandle = open(archivePath, 'wb') archive = tarfile.open(fileobj=archiveHandle, name=os.path.basename(archivePath), mode='w:gz') (data, dummy) = subprocess.Popen(['hg', 'archive', '-R', baseDir, '-t', 'tar', '-X', os.path.join(baseDir, '.hgtags'), '-'], stdout=subprocess.PIPE).communicate() repoArchive = tarfile.open(fileobj=StringIO(data), mode='r:') for fileInfo in repoArchive: fileData = repoArchive.extractfile(fileInfo) fileInfo.name = re.sub(r'^[^/]+/', '', fileInfo.name) archive.addfile(fileInfo, fileData) repoArchive.close() (data, dummy) = subprocess.Popen(['hg', 'archive', '-R', buildtoolsRepo, '-t', 'tar', '-X', os.path.join(buildtoolsRepo, '.hgtags'), '-'], stdout=subprocess.PIPE).communicate() repoArchive = tarfile.open(fileobj=StringIO(data), mode='r:') for fileInfo in repoArchive: fileData = repoArchive.extractfile(fileInfo) fileInfo.name = re.sub(r'^[^/]+/', 'buildtools/', fileInfo.name) archive.addfile(fileInfo, fileData) repoArchive.close() archive.close() archiveHandle.close() # Now add the downloads, commit and tag the downloads repo tagName = '%s_%s_RELEASE' % (branchName, version.replace('.', '_')) subprocess.Popen(['hg', 'add', '-R', downloadsRepo, buildPath, archivePath]).communicate() subprocess.Popen(['hg', 'commit', '-R', downloadsRepo, '-m', 'Releasing %s %s' % (extensionName, version)]).communicate() subprocess.Popen(['hg', 'tag', '-R', downloadsRepo, '-f', tagName]).communicate() # Tag buildtools repository as well subprocess.Popen(['hg', 'tag', '-R', buildtoolsRepo, '-f', tagName]).communicate() # Push all changes subprocess.Popen(['hg', 'push', '-R', baseDir]).communicate() subprocess.Popen(['hg', 'push', '-R', downloadsRepo]).communicate() subprocess.Popen(['hg', 'push', '-R', buildtoolsRepo]).communicate()