Skip to main content

makejinja is a CLI tool and Python library to automatically generate files from Jinja2 templates. Use it to easily generate complex Home Assistant dashboards!

Project description

Docs | Example | Templating

makejinja is a CLI tool and Python library to automatically generate files from Jinja2 templates. Use it to easily generate complex Home Assistant dashboards!


makejinja

makejinja can be used to automatically generate files from Jinja templates. This allows you to load variables from external files or create repeating patterns via loops. It is conceptually similar to gomplate, but is built on Python and Jinja instead of Go. A use case for this tool is generating config files for Home Assistant: Using the same language that the built-in templates use, you can greatly simplify your configuration. An example for Home Assistant can be found in the tests directory.

Features

  • Recursively convert nested directories containing template files. One can even specify a pattern to specify relevant files in a folder.
  • Load data files containing variables to use in your Jinja templates from YAML, TOML, and Python files.
  • Use custom functions in your Jinja templates by loading custom filters and/or globals.
  • Easily load bundled as well as custom Jinja extensions.
  • Tailor the whitespace behavior to your needs.
  • Use custom delimiters for Jinja blocks/comments/variables.
  • Modify all init options for the Jinja environment.
  • Write custom Python loaders that implement a subset of our fully typed abstract loader class

Installation

The tool is written in Python and can be installed via pip, nix, and docker. It can be used as a CLI tool or as a Python library. Please refer to the installation instructions for details.

PIP

makejinja is available via pip and can be installed via

pip install makejinja

Beware that depending on other packages installed on your system via pip, there may be incompatibilities. Thus, we advise leveraging pipx instead:

pipx install makejinja

You can then directly invoke the app as follows:

makejinja --input ./data/input --output ./data/output

Nix

If you use the nix package manager, you can add this repository as an input to your flake and use makejinja.packages.${system}.default. You can also run it directly

nix run github:mirkolenz/makejinja -- --input ./data/input --output ./data/output

Docker

We automatically publish an image at ghcr.io/mirkolenz/makejinja. To use it, mount a folder to the container and pass the options as the command.

docker run --rm -v $(pwd)/data:/data ghcr.io/mirkolenz/makejinja:latest --input /data/input --output /data/output

Usage in Terminal / Command Line

In its default configuration, makejinja searches the input folder recursively for files ending in .jinja. It then renders these files and writes them to the output folder, preserving the directory structure. Our documentation contains a detailed description of all options and can also be accessed via makejinja --help.

Project details


Release history Release notifications | RSS feed

This version

2.1.4

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

makejinja-2.1.4.tar.gz (10.5 kB view hashes)

Uploaded Source

Built Distribution

makejinja-2.1.4-py3-none-any.whl (11.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page