mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 08:15:31 +00:00
acc51b1485
This is being added to facilitate moving generation of the update URL to Rust (Bug 1567286). Once that has been completed, we should be able to remove the update URL from its current location in firefox.js so that it is not being duplicated in application.ini. Differential Revision: https://phabricator.services.mozilla.com/D43300 --HG-- extra : moz-landing-system : lando
72 lines
2.6 KiB
Python
72 lines
2.6 KiB
Python
# 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
|
|
StaticXREAppData structure as a C++ header file'''
|
|
|
|
import configparser
|
|
import sys
|
|
|
|
|
|
def main(output, file):
|
|
config = configparser.RawConfigParser()
|
|
config.read(file)
|
|
flags = set()
|
|
try:
|
|
if config.getint('XRE', 'EnableProfileMigrator') == 1:
|
|
flags.add('NS_XRE_ENABLE_PROFILE_MIGRATOR')
|
|
except Exception:
|
|
pass
|
|
try:
|
|
if config.getint('Crash Reporter', 'Enabled') == 1:
|
|
flags.add('NS_XRE_ENABLE_CRASH_REPORTER')
|
|
except Exception:
|
|
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(sorted(flags)) if flags else '0'
|
|
appdata['App:profile'] = ('"%s"' % appdata['App:profile']
|
|
if 'App:profile' in appdata else 'NULL')
|
|
expected = ('App:vendor', 'App:name', 'App:remotingname', 'App:version', 'App:buildid',
|
|
'App:id', 'Gecko:minversion', 'Gecko:maxversion', 'AppUpdate:url')
|
|
missing = [var for var in expected if var not in appdata]
|
|
if missing:
|
|
print >>sys.stderr, \
|
|
"Missing values in %s: %s" % (file, ', '.join(missing))
|
|
sys.exit(1)
|
|
|
|
if 'Crash Reporter:serverurl' not in appdata:
|
|
appdata['Crash Reporter:serverurl'] = ''
|
|
|
|
if 'App:sourcerepository' in appdata and 'App:sourcestamp' in appdata:
|
|
appdata['App:sourceurl'] = '"%(App:sourcerepository)s/rev/%(App:sourcestamp)s"' % appdata
|
|
else:
|
|
appdata['App:sourceurl'] = 'NULL'
|
|
|
|
output.write('''#include "mozilla/XREAppData.h"
|
|
static const mozilla::StaticXREAppData sAppData = {
|
|
"%(App:vendor)s",
|
|
"%(App:name)s",
|
|
"%(App:remotingname)s",
|
|
"%(App:version)s",
|
|
"%(App:buildid)s",
|
|
"%(App:id)s",
|
|
NULL, // copyright
|
|
%(flags)s,
|
|
"%(Gecko:minversion)s",
|
|
"%(Gecko:maxversion)s",
|
|
"%(Crash Reporter:serverurl)s",
|
|
%(App:profile)s,
|
|
NULL, // UAName
|
|
%(App:sourceurl)s,
|
|
"%(AppUpdate:url)s"
|
|
};''' % appdata)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) != 1:
|
|
main(sys.stdout, sys.argv[1])
|
|
else:
|
|
print >>sys.stderr, "Usage: %s /path/to/application.ini" % sys.argv[0]
|