Skip to main content

Buildout recipe for making files out of Jinja2 templates

Project description

sact.recipe.jinjatemplate is a Buildout recipe for generating files using Jinja2 templates. It’s a friendly fork of amplecode.recipe.template (no more maintained).

Buildout Options

  • template-file (required): One or more Jinja2 template file paths.

  • target-file (required): One of more target file paths. The number of files must match the number of template files.

  • base-dir: Base directory of the Jinja2 environment. Template file paths are relative to this directory. Default is the Buildout directory.

  • target-executable: One or more boolean flags (yes|no|true|false|1|0) indicating the executability of the target files. If only one flag is given it is applied to all target files.

  • eggs: Reserved for a list of eggs, conveniently converted into a pkg_resources.WorkingSet when specified.

Additional options are simply forwarded to the templates, and options from all the other parts are made available through parts.<part-name>.<option-name> and parts[<part-name>][<option-name>].

Lists of Values

It is possible for a recipe option to contain one or more values, separated by whitespace.:

#!/bin/sh
{% for cmd in cmds.split() %}
   echo "{{ cmd }}"
{% endfor %}

Minimal Example

foo.txt is created from foo.txt.jinja2 without any extra options:

[buildout]
parts = foo

[foo]
recipe = sact.recipe.jinjatemplate
template-file = foo.txt.jinja2
target-file = foo.txt

Larger Example

foo.txt is created from myapp/foo.txt.jinja2, bar.sh is created from myapp/bar.sh.jinja2, the second will be executable, and both templates can utilize the additional options specified:

[buildout]
parts = foo

[foo]
recipe = sact.recipe.jinjatemplate
base-dir = myapp
template-file =
    foo.txt.jinja2
    bar.sh.jinja2
target-file =
    foo.txt
    bar.sh
target-executable =
    false
    true
project_name = Another Example
author = Me

Templating Shell Scripts

If you use this recipe to template shell scripts, it is STRONGLY recommanded to use the filter ‘shell_quote’ to avoid bad surprises.:

#!/bin/sh
rm -rf -- {{ path|shell_quote }}

Version 1.2 (2015-01-23)

  • Updates tests

  • Add the ‘type’ builtin in the Environment globals

  • Update the documentation

Version 1.1 (2015-01-21)

  • Update bootstrap.py.

  • Add a ‘shell_quote’ Jinja filter.

  • Cleanup code.

  • Python3 compliance (seems to work fine with 3.4).

  • Add some python builtins like (any, all, bool, zip, sorted, len, int, min, max) available in templates.

  • Add more tests.

Version 1.0 (2013-11-27)

  • Initial version

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sact.recipe.jinjatemplate-1.2.tar.gz (5.3 kB view details)

Uploaded Source

File details

Details for the file sact.recipe.jinjatemplate-1.2.tar.gz.

File metadata

File hashes

Hashes for sact.recipe.jinjatemplate-1.2.tar.gz
Algorithm Hash digest
SHA256 b67a7148b26e18baf3c0c0d673aee0b1d3a9584411f5f893671af83a88fb270b
MD5 64041f208074a865c14ef6289be5799a
BLAKE2b-256 26034351a1885ebc528d2be9c9aef41a866c06186ea530b7be0889169e8d1063

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page