Render Jinja 2 templates using a standalone binary
This project is still heavily in flux. While I still encourage and heavily appreciate usage of this tool, I cannot currently guarantee any functionality. That said, if you find bugs and report them to me, I'll personally prioritize addressing them! ❤️
Start templating with Neko today by running:
neko helpThere's a pretty decent amount of documentation built into the tool for reference, so please use it if you need to quickly confirm something!
neko renders templates using the Jinja2 engine. This engine has two concepts
that are relevant for usage:
| Concept | Definition |
|---|---|
| Context | The body of variables that can be referenced from within templates |
| Template | Document defining formatting of variables, content, and other templates |
The Context in neko is built by aggregating and merging all .json files in a
given data directory.
The Template in neko is the specific file that will be rendered after loading
all base templates, filters, and macros.
These concepts are pretty native to Jinja2, and neko doesn't really abstract
them much. For more info on these, please refer to
Jinja2's docs.
neko has some basic expectation of default usage. Primarily, it expects a
directory structure like the one below:
./
├── data
│ ├── base-data.json
│ ├── sample-data.json
│ └── extra-data.json
└── templates
├── basic-document.txt.j2
└── header-content-template.j2
The given data and templates directory will be fully traversed for json and
j2 files respectively, so feel free to structure as needed for your hierarchy.
neko render template-file-name.j2The render command expects the full file name of the template that should be
rendered from within the templates directory. The result will be printed
directly to stdout.
neko dataIt can be helpful when multiple files are involved to see what context was used
to generate templates. Instead of making a template that prints out the entire
structure of the data context, neko provides the convenience sub-command
data, which will print out the entire data context in a JSON object after
fully merging all found files.
neko relies mainly on the structopt, serde, and tera crates, and
compiles using the default Rust toolchain. Nothing terribly fancy here. There's
a Travis CI pipeline set up to compile to multiple target OS and architectures,
and that'll run for any commits to master and dev, as well as populate
releases for tagged commits to master.
There's currently no project management, just check the todo's for
info on what to work on, and the contribution guide for info
on improving neko!