用mako模板构建文件的方法

buildout.recipe.mako_template的Python项目详细描述


https://img.shields.io/pypi/v/buildout.recipe.mako_template.svghttps://img.shields.io/travis/enkidulan/buildout.recipe.mako_template.svgMaintainabilityTest Coverage

buildout.recipe.mako_template

用mako模板生成文件的构建方法,重点是 大量模板的可管理性。

为构建创建此“另一个”模板配方的原因是希望具有:

  • mako具有python的所有功能和模板中的良好作用域,
  • source : destinatoin映射的简单列表,
  • 以及碰撞检测。

Recipe Options

  • files:由:符号分隔的模板和目标文件路径对的列表。 它允许指定目标是否应该是可执行的,并忽略冲突。 行的格式如下:

    source:target[:is_executable(true or false)[:collision_allowed(just a flag))]]

  • directories:模板mako的查找目录列表。模板 文件路径相对于这些目录。(默认值:${buildout:directory})

其他选项只是转发到模板,所有 其他部分通过parts[<part-name>][<option-name>]提供。

Minimal Example

buildout.cfg

[buildout]parts=foo[foo]recipe=buildout.recipe.mako_templateauthor=Mefiles=foo_1.sh.mako : foo_1.sh

foo_1.sh.mako

echo Hello ${author}!

将导致创建foo_1.sh

echo Hello Me!

Larger Example

[buildout]parts=docker-compose[project]name=MyProject[docker-compose]recipe=buildout.recipe.mako_templatedirectories=${buildout:directory}/templatesgateway_ports=8080:8080files=
    backend.dockerfile.mako  : .docker/backend.dockerfile
    frontend.dockerfile.mako : .docker/frontend.dockerfile
    gateway.dockerfile.mako  : .docker/gateway.dockerfile
    docker-compose.yaml.mako : docker-compose.yaml

docker-compose.yaml.mako

...
gateway:
    container_name: ${parts['project']['name']}_gateway
    ports:
      - "${gateway_ports}"
...

Collision detection

一个模板目标被另一个模板覆盖的情况 自动检测。例如,案例:

files=
    foo_1.sh.mako : foo_1.sh
    foo_2.sh.mako : foo_1.sh  # overwrites ``target`` form above

将导致生成失败,并显示消息:

Target collision is detected at 'foo_2.sh.mako : foo_1.sh'

但在某些情况下,这可能是一种可取的行为,因此可以允许 通过添加collision_allowed标志覆盖。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java SUN次要代码309含义   java避免为空元素生成XML自关闭标记,并生成自定义的<XML>开始标记   java使用json和restful将数组数据从本地sqlite数据库插入SQL Server   java Spring Boot 1.5.9字符编码问题   LInkedIn讨论中的java 401错误   位图Java:检查多个位向量/位集是否相交的最快方法?   macos如何让Java应用程序以图标出现在Mac OS X dock中   java如何删除netbeans中的@SuppressWarnings(“未使用的”)?   apachestorm中的java自定义序列化   java可以退出代码还是应该终止main?   递归如何在Java中递归地绘制简单的线条?   unicode在Java中确定特定字体是否可以呈现特定字符   打开并阅读带有Selenium/Katalon(Java)特定标题的电子邮件文本(来自Gmail)