#!/usr/bin/env python
#
# This file is part of libFirm.
# Copyright (C) 2012 Karlsruhe Institute of Technology.
import sys
# don't clutter our filesystem with .pyc files...
sys.dont_write_bytecode = True
import argparse
from jinja2 import Environment
import filters
import imp
import jinjautil

def main(argv):
	parser = argparse.ArgumentParser(description='Generate code/docu from node specification', add_help=True)
	parser.add_argument('--tagfile', dest='tagfile', action='store',
	                    help='doxygen tag file for link generation')
	parser.add_argument('-I', dest='includedirs', action='store', nargs='*',
	                    default=[],
	                    help='include directories for template require directives')
	parser.add_argument('specfile', action='store',
	                    help='node specification file')
	parser.add_argument('templatefile', action='store',
	                    help='jinja2 template file')
	config = parser.parse_args()

	# Load specfile
	imp.load_source('spec', config.specfile)

	loader = jinjautil.SimpleLoader()
	env = Environment(loader=loader, keep_trailing_newline=True)
	env.globals.update(jinjautil.exports)
	env.filters.update(jinjautil.filters)

	loader.includedirs += config.includedirs
	template = env.get_template(config.templatefile)
	result = template.render()
	sys.stdout.write(result)

if __name__ == "__main__":
	main(sys.argv)

@@ -729,16 +729,227 @@
 ectives'
+,%0A%09                    metavar='DIR')%0A%09parser.add_argument('-D', dest='definitions', action='append',%0A%09                    help='definition exported to jinja',%0A%09                    default=%5B%5D, metavar='NAME=DEF'
 )%0A%09parse
@@ -1412,16 +1412,216 @@
 filters)
+%0A%09for definition in config.definitions:%0A%09%09if %22=%22 not in definition:%0A%09%09%09name = definition%0A%09%09%09replacement = %22%22%0A%09%09else:%0A%09%09%09(name, replacement) = definition.split(%22=%22, 1)%0A%09%09env.globals%5Bname%5D = replacement
 %0A%0A%09loade

add -D parameter to define values