用Jinja2模板构建文件的方法
gobre.recipe.template的Python项目详细描述
template是amplecode.recipe.template的一个分支,它是使用jinja2模板生成文件的一个构建方法。配方配置了一个jinja2环境,默认情况下相对于buildout目录,允许模板扩展并包含与环境相关的其他模板。
可从pypi:http://pypi.python.org/pypi/gobre.recipe.template/
下载构建选项
- 模板文件或输入(必需):一个或多个jinja2模板文件路径。
- 目标文件或输出(必需):多个目标文件路径之一。文件数必须与模板文件数匹配。
- base dir:jinja2环境的基本目录。模板文件路径与此目录相关。默认为buildout目录。
- 目标可执行文件:一个或多个指示目标文件可执行性的布尔标志(yes no true false 1 0)。如果只给了一个标志,它将应用于所有目标文件。
- 鸡蛋:为鸡蛋列表保留,指定时方便地转换为pkg_resources.workingset
- jinja2_filters:用空格分隔的自定义筛选函数
其他选项只需转发到模板,所有其他部分的选项都可以通过parts.<part-name>.<option-name>和parts[<part-name>][<option-name>]获得。
值列表
配方选项可以包含一个或多个由空白分隔的值。当您想在jinja2模板中的空格分隔值上迭代时,可以使用拆分筛选器:
#!/bin/sh {% for cmd in cmds|split %} echo "{{ cmd }}" {% endfor %}
最小示例
foo.txt是从foo.txt.jinja2创建的,没有任何额外选项:
[buildout] parts = foo [foo] recipe = gobre.recipe.template template-file = foo.txt.jinja2 target-file = foo.txt
较大示例
foo.txt是从myapp/foo.txt.jinja2创建的,bar.sh是从myapp/bar.sh.jinja2创建的,第二个是可执行的,两个模板都可以使用指定的附加选项:
[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 = cash
foo.txt.jinja2:
{{ parts.bar['dashed-value'] }} {{ parts.bar.value }} {{ author }}
注意
{{parts.bar.dashed-value}不起作用,但您可以作为dict键访问它。
同一部分中的虚线值
如果gobre.recipe.template part中有虚线值,并且您希望引用它,请使用:
{{context['dashed-value']}}
自定义过滤器
filter函数与filter.py文件中的buildout.cfg位于同一目录中。如果要使用更多的过滤器,请用空格分隔它们。
[buildout] parts = foo [foo] recipe = gobre.recipe.template input = foo.txt.jinja2 output = foo.txt jinja2_filters = filter.bar
更改日志
请参见更改日志文件
许可证
请参见许可文件
为什么这个叉子
- buildout中应该有一个输入和输出选项(因为jinja2解析了'target file'中的'-'字符)
- 自定义过滤器支持
- 模板不应具有更改构建状态的能力
- 收集其他fork(buildout 2 support和python3support+fixes)的更改到一个新包中。