mako-render 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/env python
  2. def render(data, kw):
  3. from mako.template import Template
  4. from mako.lookup import TemplateLookup
  5. lookup = TemplateLookup(["."])
  6. return Template(data, lookup=lookup).render(**kw)
  7. def varsplit(var):
  8. if "=" not in var:
  9. return (var, "")
  10. return var.split("=", 1)
  11. def main(argv=None):
  12. from os.path import isfile
  13. from sys import stdin
  14. if argv is None:
  15. import sys
  16. argv = sys.argv
  17. from optparse import OptionParser
  18. parser = OptionParser("usage: %prog [FILENAME]")
  19. parser.add_option("--var", default=[], action="append",
  20. help="variable (can be used multiple times, use name=value)")
  21. opts, args = parser.parse_args(argv[1:])
  22. if len(args) not in (0, 1):
  23. parser.error("wrong number of arguments") # Will exit
  24. if (len(args) == 0) or (args[0] == "-"):
  25. fo = stdin
  26. else:
  27. filename = args[0]
  28. if not isfile(filename):
  29. raise SystemExit("error: can't find %s" % filename)
  30. fo = open(filename)
  31. kw = dict([varsplit(var) for var in opts.var])
  32. data = fo.read()
  33. print render(data, kw)
  34. if __name__ == "__main__":
  35. main()