跳转到主要内容

生成文本文件的Buildout食谱

项目描述

简介

此食谱可用于从(文本)模板生成文本文件。与collective.recipe.template不同,您还可以指定输出文件的路径,如果该路径不存在,则会创建该路径。

简例

[buildout]
parts = zope.conf

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

mymessage = Hello, World!

在模板中,您可以使用与在buildout配置中可以使用的完全相同的变量。例如,一个输入文件可以看起来像这样

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

作为buildout语法的扩展,您可以直接引用当前buildout部分的变量。例如

My message is: ${mymessage}

为什么还需要另一个模板食谱?

iw.recipe.templateinquant.recipe.textfile都声称要完成同样的工作。我发现它们未提供文档,并且在实际应用中存在太多错误,且它们都不在公共仓库中,我无法修复它们。此外,此实现利用了buildout变量替换代码,使其变得非常简单。

collective.recipe.template实际上缺乏对创建目标文件路径的支持(以及测试)。

详细描述

从模板简单创建文件

让我们创建一个最小的buildout.cfg文件

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

我们创建一个模板文件

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

现在我们可以运行buildout

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

模板确实已创建

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

变量 buildout:directory 也被替换为一个路径。

在变量路径中创建模板

让我们创建一个最小的 buildout.cfg 文件。这次输出应该在变量路径中

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

现在我们可以运行buildout

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

模板确实已创建

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

创建缺失的路径

如果需要在尚不存在的路径中创建输出文件,则缺失的项目会为我们创建

>>> 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.

也支持创建多个子目录

>>> 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

当输出路径发生变化时,则在卸载时会删除旧路径。因此,上面创建的 etc/ 目录现在已经消失了

>>> ls('parts')
d  foo

变更

0.1 (2009-03-09)

初始构建基于 collective.recipe.template

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

z3c.recipe.template-0.1.tar.gz (5.7 kB 查看哈希)

上传时间 源代码

由以下支持