# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. '''Parses a given application.ini file and outputs the corresponding XULAppData structure as a C++ header file''' import ConfigParser import sys def main(file): config = ConfigParser.RawConfigParser() config.read(file) flags = set() try: if config.getint('XRE', 'EnableExtensionManager') == 1: flags.add('NS_XRE_ENABLE_EXTENSION_MANAGER') except: pass try: if config.getint('XRE', 'EnableProfileMigrator') == 1: flags.add('NS_XRE_ENABLE_PROFILE_MIGRATOR') except: pass appdata = dict(("%s:%s" % (s, o), config.get(s, o)) for s in config.sections() for o in config.options(s)) appdata['flags'] = ' | '.join(flags) if flags else '0' appdata['App:profile'] = '"%s"' % appdata['App:profile'] if 'App:profile' in appdata else 'NULL' print '''#include "nsXREAppData.h" static const nsXREAppData sAppData = { sizeof(nsXREAppData), NULL, // directory "%(App:vendor)s", "%(App:name)s", "%(App:version)s", "%(App:buildid)s", "%(App:id)s", NULL, // copyright %(flags)s, NULL, // xreDirectory "%(Goanna:minversion)s", "%(Goanna:maxversion)s", %(App:profile)s };''' % appdata if __name__ == '__main__': if len(sys.argv) != 1: main(sys.argv[1]) else: print >>sys.stderr, "Usage: %s /path/to/application.ini" % sys.argv[0]