summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <classic@zzzcomputing.com>2014-01-09 18:37:39 -0500
committerMike Bayer <classic@zzzcomputing.com>2014-01-09 18:37:39 -0500
commit9e1d236edf261935590c9bd60ab93595bc5d6d7a (patch)
tree2bf357cc0c9b3861a5d3429e7ec6ad3146d69e1a
parented5bf447bd1918202fa41f25ca01aa23d23e6ffb (diff)
parent10e7ab84ed7aec07e7e97f4c9ec7e39d3c778064 (diff)
downloadmako-9e1d236edf261935590c9bd60ab93595bc5d6d7a.tar.gz
Merged in dharland/mako/patch-fix-mako-render-relative-path (pull request #2)
Allow mako-render script to take relative path filenames
-rwxr-xr-x[-rw-r--r--]scripts/mako-render18
1 files changed, 13 insertions, 5 deletions
diff --git a/scripts/mako-render b/scripts/mako-render
index a28f3aa..122589f 100644..100755
--- a/scripts/mako-render
+++ b/scripts/mako-render
@@ -1,11 +1,11 @@
#!/usr/bin/env python
-def render(data, filename, kw):
+def render(data, kw, lookup_dirs):
from mako.template import Template
from mako.lookup import TemplateLookup
- lookup = TemplateLookup(["."])
- return Template(data, filename, lookup=lookup).render(**kw)
+ lookup = TemplateLookup(lookup_dirs)
+ return Template(data, lookup=lookup).render(**kw)
def varsplit(var):
if "=" not in var:
@@ -13,7 +13,7 @@ def varsplit(var):
return var.split("=", 1)
def main(argv=None):
- from os.path import isfile
+ from os.path import isfile, dirname
from sys import stdin
if argv is None:
@@ -25,6 +25,12 @@ def main(argv=None):
parser = OptionParser("usage: %prog [FILENAME]")
parser.add_option("--var", default=[], action="append",
help="variable (can be used multiple times, use name=value)")
+ parser.add_option("--template-dir", default=[], action="append",
+ help="Directory to use for template lookup (multiple "
+ "directories may be provided). If not given then if the "
+ "template is read from stdin, the value defaults to be "
+ "the current directory, otherwise it defaults to be the "
+ "parent directory of the file provided.")
opts, args = parser.parse_args(argv[1:])
if len(args) not in (0, 1):
@@ -32,15 +38,17 @@ def main(argv=None):
if (len(args) == 0) or (args[0] == "-"):
fo = stdin
+ lookup_dirs = opts.template_dir or ["."]
else:
filename = args[0]
if not isfile(filename):
raise SystemExit("error: can't find %s" % filename)
fo = open(filename)
+ lookup_dirs = opts.template_dir or [dirname(filename)]
kw = dict([varsplit(var) for var in opts.var])
data = fo.read()
- print(render(data, filename, kw))
+ print(render(data, kw, lookup_dirs=lookup_dirs))
if __name__ == "__main__":
main()