Inspired by the dockerize template library, GTE is a go template engine based on the golang template package and the go-jmespath library (JMESPath is a query language for JSON).
gte [options] template destination [template destination]...
-n --no-overwrite
Do not overwrite destination file if it already exists.
-d --delims
template tag delimiters. default "{{":"}}"
Arguments:
template - the template. Can be passed multiple times together with destination as an ordered pair (2-tuple). Does also support directories.
destination - the destination . Can be passed multiple times together with destination as an ordered pair (2-tuple). Does also support directories.
Generate test.conf using test.tmpl as a template.
gte test.tmpl /etc/test/test.conf
content template test.tmpl:
#Begin Config
json:
{{ jsonQuery `{"cc":{"servers":[{"host":"aa","port":1001},{"host":"bb","port":1002},{"host":"cc","port":1003}]}}` `-i2 cc.servers[*]` }}
#End Config
generated test.conf:
#Begin Config
json:
[
{
"host": "aa",
"port": 1001
},
{
"host": "bb",
"port": 1002
},
{
"host": "cc",
"port": 1003
}
]
#End Config
{{ jsonQuery \`json-source\` \`[options] jmespath\` }}
e.g. `{"host": "10.0.0.1"}`
e.g. .Env.VCAP_SERVICES (json in environment variable)
jmespath: valid jmespath (see http://jmespath.org)
e.g. `host`
e.g. `services[0].host`
e.g. `services[?host=='10.0.0.1']`
(none)
output rendered as inline json
-iNUM
intend json output with the defined number of spaces, e.g. -i5
-y
yaml output