46 lines
1.2 KiB
Python
Executable file
46 lines
1.2 KiB
Python
Executable file
#!/usr/bin/python
|
|
|
|
def render(data, filename, kw):
|
|
from mako.template import Template
|
|
from mako.lookup import TemplateLookup
|
|
|
|
lookup = TemplateLookup(["."])
|
|
return Template(data, filename, lookup=lookup).render(**kw)
|
|
|
|
def varsplit(var):
|
|
if "=" not in var:
|
|
return (var, "")
|
|
return var.split("=", 1)
|
|
|
|
def main(argv=None):
|
|
from os.path import isfile
|
|
from sys import stdin
|
|
|
|
if argv is None:
|
|
import sys
|
|
argv = sys.argv
|
|
|
|
from optparse import OptionParser
|
|
|
|
parser = OptionParser("usage: %prog [FILENAME]")
|
|
parser.add_option("--var", default=[], action="append",
|
|
help="variable (can be used multiple times, use name=value)")
|
|
|
|
opts, args = parser.parse_args(argv[1:])
|
|
if len(args) not in (0, 1):
|
|
parser.error("wrong number of arguments") # Will exit
|
|
|
|
if (len(args) == 0) or (args[0] == "-"):
|
|
fo = stdin
|
|
else:
|
|
filename = args[0]
|
|
if not isfile(filename):
|
|
raise SystemExit("error: can't find %s" % filename)
|
|
fo = open(filename)
|
|
|
|
kw = dict([varsplit(var) for var in opts.var])
|
|
data = fo.read()
|
|
print(render(data, filename, kw))
|
|
|
|
if __name__ == "__main__":
|
|
main()
|