jinjaturtle/README.md
2025-11-25 15:44:12 +11:00

76 lines
2.3 KiB
Markdown

# JinjaTurtle
JinjaTurtle is a command-line tool to help you generate Jinja2 templates and
Ansible `defaults/main.yml` files from a native configuration file of a piece
of software.
## How it works
* The config file is examined
* Parameter key names are generated based on the parameter names in the
config file. In keeping with Ansible best practices, you pass a prefix
for the key names, which should typically match the name of your Ansible
role.
* A Jinja2 file is generated from the file with those parameter key names
injected as the `{{ variable }}` names.
* A `defaults/main.yml` is generated with those key names and the *values*
taken from the original config file as the defaults.
By default, the Jinja2 template and the `defaults/main.yml` are printed to
stdout. However, it is possible to output the results to new files.
## How to install it
### From PyPi
```
pip install jinjaturtle
```
### From this git repository
Clone the repo and then run inside the clone:
```
poetry install
```
### AppImage
Download the AppImage from the Releases and make it executable, and put it
on your `$PATH`.
## How to run it
Say you have a `php.ini` file and you are in a directory structure like an
Ansible role (with subfolders `defaults` and `templates`):
```shell
jinjaturtle php.ini \
--role-name php \
--defaults-output defaults/main.yml \
--template-output templates/php.ini.j2
```
## Full usage info
```
usage: jinjaturtle [-h] -r ROLE_NAME [-f {ini,toml}] [-d DEFAULTS_OUTPUT] [-t TEMPLATE_OUTPUT] config
Convert a config file into an Ansible defaults file and Jinja2 template.
positional arguments:
config Path to the source configuration file (TOML or INI-style).
options:
-h, --help show this help message and exit
-r, --role-name ROLE_NAME
Ansible role name, used as variable prefix (e.g. cometbft).
-f, --format {ini,toml}
Force config format instead of auto-detecting from filename.
-d, --defaults-output DEFAULTS_OUTPUT
Path to write defaults/main.yml. If omitted, defaults YAML is printed to stdout.
-t, --template-output TEMPLATE_OUTPUT
Path to write the Jinja2 config template. If omitted, template is printed to stdout.
```