Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mirkolenz/makejinja
Generate entire directory structures using Jinja templates with support for external data and custom plugins.
https://github.com/mirkolenz/makejinja
ansible automation cli dashboard docker generator hassio home-assistant jinja jinja2 library lovelace nix python template templating tools
Last synced: 28 days ago
JSON representation
Generate entire directory structures using Jinja templates with support for external data and custom plugins.
- Host: GitHub
- URL: https://github.com/mirkolenz/makejinja
- Owner: mirkolenz
- License: mit
- Created: 2022-12-10T23:17:03.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-09T11:12:51.000Z (7 months ago)
- Last Synced: 2024-04-09T14:22:39.791Z (7 months ago)
- Topics: ansible, automation, cli, dashboard, docker, generator, hassio, home-assistant, jinja, jinja2, library, lovelace, nix, python, template, templating, tools
- Language: Python
- Homepage: https://mirkolenz.github.io/makejinja/
- Size: 646 KB
- Stars: 54
- Watchers: 2
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
makejinja
PyPI |
Docker |
Docs |
Example |
Jinja reference
Generate entire directory structures using Jinja templates with support for external data and custom plugins.---
# makejinja
makejinja can be used to automatically generate files from [Jinja templates](https://jinja.palletsprojects.com/en/3.1.x/templates).
It is conceptually similar to [Ansible templates](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html) since both are built on top of Jinja.
However, makejinja is a standalone tool that can be used without Ansible and offers some advanced features like custom plugins.
A use case for this tool is generating config files for [Home Assistant](https://www.home-assistant.io/):
Using the same language that the built-in templates use, you can greatly simplify your configuration.
An [example for Home Assistant](https://github.com/mirkolenz/makejinja/tree/main/tests/data) can be found in the tests directory.## Highlights
- Recursively render nested directories containing template files to a common output directory.
- Load data files containing variables to use in your Jinja templates from YAML, TOML, and Python files.
- Write custom [plugins](https://mirkolenz.github.io/makejinja/makejinja/plugin.html#Plugin) to extend the functionality of makejinja.
- Adjust all Jinja options (e.g., whitespace behavior and delimiters) to your needs via CLI flags or a config file.## 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.### PIP
makejinja is available on [PyPI](https://pypi.org/project/makejinja/) and can be installed via `pip`:
```shell
pip install makejinja
makejinja -i ./input -o ./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` or apply the overlay `makejinja.overlays.default`.
You can also run it directly as follows:```shell
nix run github:mirkolenz/makejinja -- -i ./input -o ./output
```### Docker
We automatically publish an image to the [GitHub Container Registry](https://ghcr.io/mirkolenz/makejinja).
To use it, mount a directory to the container and pass the options as the command:```shell
docker run --rm -v $(pwd)/data:/data ghcr.io/mirkolenz/makejinja:latest -i /data/input -o /data/output
```## Usage in Terminal / Command Line
In its default configuration, makejinja searches the input directory recursively for files ending in `.jinja`.
It then renders these files and writes them to the output directory, preserving the directory structure.
Our [documentation](https://mirkolenz.github.io/makejinja/makejinja/cli.html) contains a detailed description of all options and can also be accessed via `makejinja --help`.