A command line Jinja2 renderer inspired by gomplate
jinplate can read from local and remote variable files in a number of formats and use them to render a local Jinja2 template file.
jinplate uses URIs to identify how to fetch and parse Jinja2 variable files.
pip install jinplate
To install with support for the tests and filters included with ansible, use
pip install jinplate[ansible]
jinplate --help
Usage: jinplate [OPTIONS] TEMPLATE_FILE DATASOURCES...
A command line renderer for jinja2 templates. If ansible is available,
jinplate uses its template engine. If not, uses plain jinja2.
TEMPLATE_FILE is the path to a jinja template file to render
DATASOURCES is a list of URIs to data sources supported by jinplate which
contain the template variables
-e allows specifying individual vars in the format key=value. Example: -e
test1=1 -e test2=2
--jinja-ext allows specifying a comma-separated list of import paths
containing jinja extensions. Example: --jinja-ext jinja2.ext.i18n
Options:
--jinja-ext TEXT A comma-separated list of jinja extensions to load
-e TEXT Individual template vars in the format key=value
--help Show this message and exit.
test.j2
---
key: {{ test1.key }}
arr: {{ test2.arr }}
vars.json
{
"test1": {
"key": "val"
},
"test2": {
"arr": [1, 2, 3]
}
}
jinplate test.j2 "file:///$(pwd)/vars.json"
---
key: val
arr: [1, 2, 3]
python -m http.server
jinplate test.j2 "http://127.0.0.1:8000/vars.json"
---
key: val
arr: [1, 2, 3]
URI Scheme | Plugin | Example |
---|---|---|
file | jinplate.plugins.scheme.file |
file:////path/to/vars.yaml |
http | jinplate.plugins.scheme.http |
http://127.0.0.1:8000/vars |
File types are determined by extension, but can also be overridden by appending
+<file_type>
to the datasource URI scheme, as in http+json://
File type | Matching extensions | Plugin | Example |
---|---|---|---|
json | .json |
jinplate.plugins.filetype.json |
http+json://127.0.0.1:8000/vars |
yaml | .yaml , .yml |
jinplate.plugins.filetype.yaml |
http://127.0.0.1:8000/vars.yml file:////path/to/vars.yaml |
dotenv | .env |
jinplate.plugins.filetype.dotenv |
file+env:////path/to/vars |