Adding the tools directory to the git export.
diff --git a/tools/buildgen/mako_renderer.py b/tools/buildgen/mako_renderer.py
new file mode 100755
index 0000000..29c7cf0
--- /dev/null
+++ b/tools/buildgen/mako_renderer.py
@@ -0,0 +1,105 @@
+#!/usr/bin/python
+
+"""Simple Mako renderer.
+
+Just a wrapper around the mako rendering library.
+
+"""
+
+import getopt
+import imp
+import os
+import sys
+
+
+from mako.lookup import TemplateLookup
+from mako.runtime import Context
+from mako.template import Template
+import simplejson
+import bunch
+
+
+# Imports a plugin
+def import_plugin(name):
+ _, base_ex = os.path.split(name)
+ base, _ = os.path.splitext(base_ex)
+
+ with open(name, 'r') as plugin_file:
+ plugin_code = plugin_file.read()
+ plugin_module = imp.new_module(base)
+ exec plugin_code in plugin_module.__dict__
+ return plugin_module
+
+
+def out(msg):
+ print >> sys.stderr, msg
+
+
+def showhelp():
+ out('mako-renderer.py [-o out] [-m cache] [-d dict] [-d dict...] template')
+
+
+def main(argv):
+ got_input = False
+ module_directory = None
+ dictionary = {}
+ json_dict = {}
+ got_output = False
+ output_file = sys.stdout
+ plugins = []
+
+ try:
+ opts, args = getopt.getopt(argv, 'hm:d:o:p:')
+ except getopt.GetoptError:
+ out('Unknown option')
+ showhelp()
+ sys.exit(2)
+
+ for opt, arg in opts:
+ if opt == '-h':
+ out('Displaying showhelp')
+ showhelp()
+ sys.exit()
+ elif opt == '-o':
+ if got_output:
+ out('Got more than one output')
+ showhelp()
+ sys.exit(3)
+ got_output = True
+ output_file = open(arg, 'w')
+ elif opt == '-m':
+ if module_directory is not None:
+ out('Got more than one cache directory')
+ showhelp()
+ sys.exit(4)
+ module_directory = arg
+ elif opt == '-d':
+ dict_file = open(arg, 'r')
+ bunch.merge_json(json_dict, simplejson.loads(dict_file.read()))
+ dict_file.close()
+ elif opt == '-p':
+ plugins.append(import_plugin(arg))
+
+ for plugin in plugins:
+ plugin.mako_plugin(json_dict)
+
+ for k, v in json_dict.items():
+ dictionary[k] = bunch.to_bunch(v)
+
+ ctx = Context(output_file, **dictionary)
+
+ for arg in args:
+ got_input = True
+ template = Template(filename=arg,
+ module_directory=module_directory,
+ lookup=TemplateLookup(directories=['.']))
+ template.render_context(ctx)
+
+ if not got_input:
+ out('Got nothing to do')
+ showhelp()
+
+ output_file.close()
+
+if __name__ == '__main__':
+ main(sys.argv[1:])