跳转到主要内容

变量收集器和模板运行器。

项目描述

c2c.template

支持的模板:Jinja、Mako、Template。

收集一些变量并将它们传递给模板引擎的工具。

支持的模板:JinjaMako

使用 c2c-template --help 获取命令行帮助。

变量文件

变量收集器从像这样的YAML文件中获取变量

extends: inherit.yaml

vars:
     string_var: a string
     int_var: 42
     interpreted_var: __import__('datetime').date.today()
     combined_var: 'Today: {interpreted_var:%Y-%m-%d}'
     facter_json: /usr/bin/facter --json
     facter_yaml: /usr/bin/facter --yaml
     pi: console.log(Math.PI.toPrecision(3))
     obj:
         v1: 1
         v2: '2'
         v3: [1, 2, 3]

 interpreted:
     python:
     - interpreted_var
     bash:
     - facter_json
     - facter_yaml
     json:
     - facter_json
     yaml:
     - facter_yaml
     node:
         vars: ["pi"]
         cmd: ["node", "-e"]

 update_path:
 - obj

inherit.yaml 是一个具有相同语法的其他文件,将提供初始变量。

vars 部分是我们定义变量值的地方,YAML文件支持类型,因此 42 将是一个整数。

用于解释一些变量(如 pythonbashenvironjsonyaml)的 interpreted 配置是预定义的解释器,而 node 是自定义解释器。

update_path 是一个由‘.’分隔的路径列表,这些路径将被更新(对于字典)或追加(对于列表),而不是覆盖。子路径将隐式添加。

我们可以重用预定义的变量并对它们进行格式化(参见 combined_var),详见: str.format()

使用示例

在模板中解释变量

c2c-template --vars vars.yaml --engine jinja --files template.jinja

结果将存储在名为 template 的文件中。

获取变量

在模板外获取变量可能很有用。

`c2c-template --vars vars.yaml --get-vars INT_VAR=int_var string_var`

这将设置 bash 变量 INT_VAR 为 42,以及 STRING_VAR 为 'a string'。

获取配置文件

c2c-template --vars vars.yaml --get-config config.yaml string-var int-var combined-var

将创建一个名为 config.yaml 的文件。

string-var: a string
int-var: 42
combined-var: Today: 2014-12-12

根据模板构建一组文件

创建以下变量文件(vars.yaml

vars:
    var1: common
    iter:
    - name: one
      var2: first
    - name: two
      var2: second

以及以下模板(template.jinja

var1: {{ var1 }}
var2: {{ var2 }}

然后运行以下命令

c2c-template --vars vars.yaml --files-builder template.jinja {name}.txt iter

这将创建两个文件

名为 one.txt 的文件,内容如下

var1: common
var2: first

名为 two.txt 的文件,内容如下

var1: common
var2: second

由...

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面