summaryrefslogtreecommitdiffstats
path: root/build/moz.configure/keyfiles.configure
diff options
context:
space:
mode:
Diffstat (limited to 'build/moz.configure/keyfiles.configure')
-rw-r--r--build/moz.configure/keyfiles.configure68
1 files changed, 68 insertions, 0 deletions
diff --git a/build/moz.configure/keyfiles.configure b/build/moz.configure/keyfiles.configure
new file mode 100644
index 000000000..5a71fd4b2
--- /dev/null
+++ b/build/moz.configure/keyfiles.configure
@@ -0,0 +1,68 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=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/.
+
+
+@template
+def keyfile(desc, help=None, callback=lambda x: x):
+ help = help or ('Use the secret key contained in the given keyfile '
+ 'for %s requests' % desc)
+ name = desc.lower().replace(' ', '-')
+ no_key = callback('no-%s-key' % name)
+
+ option('--with-%s-keyfile' % name, nargs=1, help=help)
+
+ @depends('--with-%s-keyfile' % name)
+ @checking('for the %s key' % desc, lambda x: x and x is not no_key)
+ @imports(_from='__builtin__', _import='open')
+ @imports(_from='__builtin__', _import='IOError')
+ def keyfile(value):
+ if value:
+ try:
+ with open(value[0]) as fh:
+ result = fh.read().strip()
+ if result:
+ return callback(result)
+ raise FatalCheckError("'%s' is empty." % value[0])
+ except IOError as e:
+ raise FatalCheckError("'%s': %s." % (value[0], e.strerror))
+ return no_key
+
+ return keyfile
+
+
+@template
+def simple_keyfile(desc):
+ value = keyfile(desc)
+ set_config('MOZ_%s_KEY' % desc.upper().replace(' ', '_'), value)
+ # Only really required for MOZ_ADJUST_SDK_KEY currently still used in
+ # old-configure.
+ add_old_configure_assignment('MOZ_%s_KEY' % desc.upper().replace(' ', '_'),
+ value)
+
+
+@template
+def id_and_secret_keyfile(desc):
+ def id_and_secret(value):
+ if value.startswith('no-') and value.endswith('-key'):
+ id = value[:-3] + 'clientid'
+ secret = value
+ elif ' ' in value:
+ id, secret = value.split(' ', 1)
+ else:
+ raise FatalCheckError('%s key file has an invalid format.' % desc)
+ return namespace(
+ id=id,
+ secret=secret,
+ )
+
+ content = keyfile(desc, help='Use the client id and secret key contained '
+ 'in the given keyfile for %s requests' % desc,
+ callback=id_and_secret)
+
+
+ name = desc.upper().replace(' ', '_')
+ set_config('MOZ_%s_CLIENTID' % name, delayed_getattr(content, 'id'))
+ set_config('MOZ_%s_KEY' % name, delayed_getattr(content, 'secret'))