生成文本文件的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.template和inquant.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 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9d03353ca896efe8d78b17f992710df188552014986f1358091cdbd8c25a4d25 |
|
MD5 | 15f5ba95c6743132ef8464a67c5df26c |
|
BLAKE2b-256 | 353078e154c2b73bfdd0a3c1daef2bfa7932aad16ecee358139b7b5fc80d417e |