From afbfaf92af7a8a59ae2e5aeda97561aba6d4f30b Mon Sep 17 00:00:00 2001
From: Mike Bayer <mike_mp@zzzcomputing.com>
Date: Wed, 28 Dec 2011 10:53:46 -0500
Subject: [PATCH] - Added "--var name=value" option to the mako-render  
 script, allows passing of kw to the template from   the command line.
 [ticket:178]

---
 CHANGES             |  4 ++++
 scripts/mako-render | 14 +++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/CHANGES b/CHANGES
index 0532565..07c9ff4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -24,6 +24,10 @@
   now as cache_args={'url':<some url>, 'type':'memcached',
   'timeout':50, 'dir':'/path/to/some/directory'}
 
+- Added "--var name=value" option to the mako-render 
+  script, allows passing of kw to the template from 
+  the command line. [ticket:178]
+
 0.5
 - A Template is explicitly disallowed
   from having a url that normalizes to relative outside
diff --git a/scripts/mako-render b/scripts/mako-render
index 1ea2790..d4b54ea 100644
--- a/scripts/mako-render
+++ b/scripts/mako-render
@@ -1,11 +1,16 @@
 #!/usr/bin/env python
 
-def render(data):
+def render(data, kw):
     from mako.template import Template
     from mako.lookup import TemplateLookup
 
     lookup = TemplateLookup(["."])
-    return Template(data, lookup=lookup).render()
+    return Template(data, 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
@@ -18,6 +23,8 @@ def main(argv=None):
     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):
@@ -31,8 +38,9 @@ def main(argv=None):
             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)
+    print render(data, kw)
 
 if __name__ == "__main__":
     main()
-- 
GitLab