Skip to content

neozenith/injinja

Repository files navigation

injinja 🥷

CICD Checks Build Status Coverage

GitHub commit activity GitHub open issues GitHub open pull requests

Deploy GitHub Pages License Latest Release

Injinja: Injectable Jinja Configuration tool.

Insanely configurable... config system.

Features

  • Recursive Deep Merge: Sick of scrolling giant mega config files? Would you rather have organised folders of smaller configs that act like they are part of the same big config? We recursively deep merge your config.
  • Powerful: Any of your config files are now empowered with the full programming capabilities of Jinja templating engine for better parametrising the one set of config files.
  • Flexible: You design your configuration schema yourself in any of JSON, YAML or TOML.
  • Enabling: Separate your project config out to allow "Drive By Contributors". Even non-technical colleagues can edit a text file in a browser to raise a PR.
  • Nothing Implicit: By design nothing is implicit and every input is explicit. We prefer powerful tools rather than "magic" tools.

Quickstart

uvx injinja -e home_dir="$HOME" -c 'samples/config/*' -t sql/ddl/warehouse__roles.sql.j2
# OR
uv run injinja.py -e home_dir="$HOME" -c 'samples/config/*' -t sql/ddl/warehouse__roles.sql.j2

Two step templating configuration system:

  • Runtime DYNAMIC configuration (-e or --env)
  • Can template the STATIC configuration (-c or --config)
  • To allow deep and rich config to populate your TEMPLATE file (-t or --template).

Simplified Architecture

Overview Diagram

  1. Dynamic Configuration: Environment variables and CLI flags provide runtime values
  2. Static Configuration: YAML/JSON/TOML files that can themselves be Jinja templates
  3. Schema Validation: Validate merged configuration against schemas before templating
  4. Template Rendering: Apply the validated configuration to your target template

Documentation

Please read our User Guide Documentation

Roadmap and TODO list

Open Issues that are raised by neozenith

About

Injinja: Injectable Jinja Configuration tool. Insanely configurable config.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors