Skip to main content

Introduction

This recipe can be used to generate textfiles from a (text) template. Different to collective.recipe.template you can also specify a path to the output file and the path will be created, if it does not exist.

A short example:

[buildout]
parts = zope.conf

[message]
recipe = collective.recipe.template
input = templates/message.in
output = ${buildout:parts-directory}/etc/message

mymessage = Hello, World!

In the template you can use the exact same variables as you can use in the buildout configuration. For example an input file can look like this:

My top level directory is ${buildout:directory}
Executables are stored in ${buildout:bin-directory}

As an extension to the buildout syntax you can reference variables from the current buildout part directly. For example:

My message is: ${mymessage}

Why another template recipe?

Both iw.recipe.template and inquant.recipe.textfile claim to do the same thing. I have found them to be undocumented and too buggy for real world use, and neither are in a public repository where I could fix them. In addition this implementation leverages the buildout variable substitution code, making it a lot simpler.

collective.recipe.template actually lacks support for creating paths of target files to be generated (and tests).

Detailed Description

Simple creation of a file out of a template

Lets create a minimal buildout.cfg file:

>>> write('buildout.cfg',
... '''
... [buildout]
... parts = template
... offline = true
...
... [template]
... recipe = z3c.recipe.template
... input = template.in
... output = template
... ''')

We create a template file:

>>> write('template.in',
... '''#
... My template knows about buildout path:
...   ${buildout:directory}
... ''')

Now we can run buildout:

>>> print system(join('bin', 'buildout')),
Installing template.

The template was indeed created:

>>> cat('template')
#
My template knows about buildout path:
.../sample-buildout

The variable buildout:directory was also substituted by a path.

Creating a template in a variable path

Lets create a minimal buildout.cfg file. This time the output should happen in a variable path:

>>> write('buildout.cfg',
... '''
... [buildout]
... parts = template
... offline = true
...
... [template]
... recipe = z3c.recipe.template
... input = template.in
... output = ${buildout:parts-directory}/template
... ''')

Now we can run buildout:

>>> print system(join('bin', 'buildout')),
Uninstalling template.
Installing template.

The template was indeed created:

>>> cat('parts', 'template')
#
My template knows about buildout path:
.../sample-buildout

Creating missing paths

If an output file should be created in a path that does not yet exist, then the missing items will be created for us:

>>> write('buildout.cfg',
... '''
... [buildout]
... parts = template
... offline = true
...
... [template]
... recipe = z3c.recipe.template
... input = template.in
... output = ${buildout:parts-directory}/etc/template
... ''')

>>> print system(join('bin', 'buildout')),
Uninstalling template.
Installing template.

Also creation of several subdirectories is supported:

>>> write('buildout.cfg',
... '''
... [buildout]
... parts = template
... offline = true
...
... [template]
... recipe = z3c.recipe.template
... input = template.in
... output = ${buildout:parts-directory}/foo/bar/template
... ''')

>>> print system(join('bin', 'buildout')),
Uninstalling template.
Installing template.

>>> cat('parts', 'foo', 'bar', 'template')
#
My template knows about buildout path:
.../sample-buildout

When changes happen to the output path, then the old path is removed on uninstall. Therefore the etc/ directory created above has vanished now:

>>> ls('parts')
d  foo

Changes

0.1 (2009-03-09)

Initial build based on collective.recipe.template

Release files for z3c.recipe.template 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for z3c.recipe.template 0.1
File Size Uploaded
z3c.recipe.template-0.1.tar.gz 5.7 kB Details

Release files / z3c.recipe.template-0.1.tar.gz

Download URL z3c.recipe.template-0.1.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9d03353ca896efe8d78b17f992710df188552014986f1358091cdbd8c25a4d25
BLAKE2b-256 checksum
How to use checksums
353078e154c2b73bfdd0a3c1daef2bfa7932aad16ecee358139b7b5fc80d417e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page