Package: gobre.recipe.template
gobre.recipe.template is a fork of amplecode.recipe.template, a Buildout recipe for generating files using Jinja2 templates. The recipe configures a Jinja2 environment, by default relative to the Buildout directory, allowing templates to extend and include other templates relative to the environment.Downloads are available from pypi:https://pypi.org/project/gobre.recipe.template/Buildout Optionstemplate-file or input (required): One or more Jinja2 template file paths.target-file or output (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 specifiedjinja2_filters: custom filter functions separated by white-spaceAdditional options are simply forwarded to the templates, and options from all the other parts are made available throughparts.<part-name>.<option-name>andparts[<part-name>][<option-name>].Lists of ValuesIt is possible for a recipe option to contain one or more values, separated by whitespace. A split filter is available for when you want to iterate over the whitespace separated values in your Jinja2 template:#!/bin/sh
{% for cmd in cmds|split %}
   echo "{{ cmd }}"
{% endfor %}Minimal Examplefoo.txt is created from foo.txt.jinja2 without any extra options:[buildout]
parts = foo

[foo]
recipe = gobre.recipe.template
template-file = foo.txt.jinja2
target-file = foo.txtLarger Examplefoo.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 = gobre.recipe.template
base-dir = myapp
template-file =
    foo.txt.jinja2
    bar.sh.jinja2
input =
    foo.txt
    bar.sh
output =
    false
    true
project_name = Another Example
author = Me

[bar]
dashed-value = borg
value = cashfoo.txt.jinja2:{{ parts.bar['dashed-value'] }}
{{ parts.bar.value }}
{{ author }}Note{{ parts.bar.dashed-value }}won’t work, but you can access it as a dict key.Dashed value in the same partIf there is a dashed-value in gobre.recipe.template part and you would like to reference it, use:{{context['dashed-value']}}Custom filtersThe filter function is located in the same directory as the buildout.cfg in a filter.py file. If you want to use more filters separate them with a white space.[buildout]
parts = foo

[foo]
recipe = gobre.recipe.template
input = foo.txt.jinja2
output = foo.txt
jinja2_filters = filter.barChangelogSee the CHANGELOG fileLicenseSee the LICENSE fileWhy this forkthere should be an input and output option in buildout (since the ‘-’ in ‘target-file’ char is parsed by jinja2)custom filters supporttemplates should not have the ability to change state of buildoutGather the changes of the other forks (buildout 2 support and Python 3 support + fixes into a new package).