Mercurial > hg > MakeItSo
view examples/doctest.txt @ 90:26b9c3bba04e
make the api for substitute() variables, output
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 10 Jan 2011 21:33:03 -0800 |
parents | 712a6d358083 |
children | 672d2d3ee322 |
line wrap: on
line source
MakeItSo! ========= A filesystem templating system for rapid deploy of projects Boilerplate:: >>> import makeitso >>> import os >>> import shutil >>> import tempfile >>> from StringIO import StringIO Basic functionality:: >>> example = os.path.join(here, 'example.txt') >>> template = makeitso.PolyTemplate([example], interactive=False) >>> template.missing() set(['name']) >>> template.substitute(dict(name='foo')) Hello foo Substitute to a buffer:: >>> buffer = StringIO() >>> template = makeitso.PolyTemplate([example], interactive=False) >>> template.substitute(dict(name='bar'), output=buffer) >>> buffer.getvalue().strip() 'Hello bar' Substitute to a file:: >>> buffer = tempfile.mktemp() >>> template = makeitso.PolyTemplate([example], interactive=False) >>> template.substitute(dict(name='fleem'), buffer) >>> file(buffer).read().strip() 'Hello fleem' >>> os.remove(buffer) Directory case:: >>> exampledir = os.path.join(here, 'directory-example') >>> tempdir = tempfile.mkdtemp() >>> template = makeitso.PolyTemplate([exampledir], interactive=False) >>> sorted(template.missing()) ['bar', 'foo', 'subdir'] >>> template.substitute(dict(foo='It', bar='life', subdir='mysubdir'), output=tempdir) >>> sorted(os.listdir(tempdir)) ['foo.txt', 'mysubdir'] >>> file(os.path.join(tempdir, 'foo.txt')).read().strip() 'It is a wonderful life' >>> os.listdir(os.path.join(tempdir, 'mysubdir')) ['life.txt'] >>> file(os.path.join(tempdir, 'mysubdir', 'life.txt')).read().strip() 'It' >>> shutil.rmtree(tempdir) Mixed case:: >>> template = makeitso.PolyTemplate([example, exampledir], interactive=False) >>> variables = sorted(template.missing()) >>> variables ['bar', 'foo', 'name', 'subdir'] You need to provide output for mixing files and directory templates:: >>> variables = dict([(i, i.title()) for i in variables]) >>> try: ... template.substitute(variables) ... except AssertionError, e: ... pass >>> e AssertionError() Provide an output:: >>> template = makeitso.PolyTemplate([example, exampledir], interactive=False) >>> template.substitute(variables, tempdir) >>> sorted(os.listdir(tempdir)) ['Subdir', 'example.txt', 'foo.txt'] >>> shutil.rmtree(tempdir) Test API templates:: >>> from makeitso.template import MakeItSoTemplate, Variable >>> class MyTemplate(MakeItSoTemplate): ... name = 'foo' ... templates = ['example.txt'] ... vars = [Variable(name='name', default='bar')] >>> buffer = tempfile.mktemp() >>> apitemplate = MyTemplate(interactive=False) >>> apitemplate.substitute({}, buffer) >>> file(buffer).read().strip() 'Hello bar' >>> os.remove(buffer) Test to make sure permissions are preserved. This won't work on windows:: >>> buffer = tempfile.mktemp() >>> f = file(buffer, 'w') >>> print >> f, '#!/bin/bash\necho foo' >>> f.close() >>> os.chmod(buffer, 0755) >>> uritemplate = makeitso.URITemplate(example, interactive=False) >>> uritemplate.substitute(dict(name='bar'), buffer) >>> ('%o' % os.stat(buffer).st_mode).endswith('755') True >>> os.remove(buffer)