Skip to main content

Use Jinja2 templates via cli

Project description

Jinja2 tools

Use Jinja2 templates via cli

Install

$ pip install jinja2-tools

Usage

Usage: jinja render [OPTIONS]
Options:
  -d, --data TEXT          PATH to YAML or JSON data file, URL or '-' for
                           stdin.

  -t, --template TEXT      PATH to directory or to any file that uses Jinja,
                           URL or '-' for stdin.

  -v, --verbose
  -tb, --no-trim-blocks    Disable trim blocks.
  -lb, --no-lstrip-blocks  Disable lstrip blocks.
  -o, --output PATH        PATH for output, stdout by default.
  -e, --extra-var TEXT     key value pair separated by '='. 'value' will be
                           treated as JSON or as a string in case of JSON
                           decoding error. This will take precedence over
                           'data'.

  --help                   Show this message and exit.

Whitespace Control

trim_blocks and lstrip_blocks are used by default, to disable them use -tb or -lb respectively.

Examples

  • Use path from the filesystem for data & template:

    ➜ jinja render -d examples/data/data.yaml -t examples/templates/template.yaml
    (1)
    ip access-list extended al-hq-in
    (2)
        (3)    remark Allow traffic from hq to local office
        (4)(2)
        (3)    permit 10.0.0.0/22 10.100.0.0/24
        (5)(6)
    (7)
    
    # All ACLs have been generated
    
  • Use stdin for data & URL for template, also disable trim blocks & lstrip blocks:

    ➜ jinja render -d - -t https://raw.githubusercontent.com/Avielyo10/jinja2-tools/master/examples/templates/template.yaml -lb -tb < examples/data/data.yaml
    (1)
    ip access-list extended al-hq-in
      (2)
        (3)
        remark Allow traffic from hq to local office
        (4)
      (2)
        (3)
        permit 10.0.0.0/22 10.100.0.0/24
        (5)
      (6)
    (7)
    
    # All ACLs have been generated
    
  • Verbose:

    ➜ jinja render -d examples/data/data.yaml -t examples/templates/template.yaml -v     
    ---------- [Data] ----------
    {
      "access_lists": {
        "al-hq-in": [
          {
            "action": "remark",
            "text": "Allow traffic from hq to local office"
          },
          {
            "action": "permit",
            "src": "10.0.0.0/22",
            "dst": "10.100.0.0/24"
          }
        ]
      }
    }
    
    ---------- [Template] ----------
    {% for acl, acl_lines in access_lists.items() %}(1)
    ip access-list extended {{ acl }}
      {% for line in acl_lines %}(2)
        (3){% if line.action == "remark" %}
        remark {{ line.text }}
        (4){% elif line.action == "permit" %}
        permit {{ line.src }} {{ line.dst }}
        (5){% endif %}
      {% endfor %}(6)
    {% endfor %}(7)
    
    # All ACLs have been generated
    
    (1)
    ip access-list extended al-hq-in
    (2)
        (3)    remark Allow traffic from hq to local office
        (4)(2)
        (3)    permit 10.0.0.0/22 10.100.0.0/24
        (5)(6)
    (7)
    
    # All ACLs have been generated
    
  • Pass the data using multiple extra vars:

    ➜ jinja render -t examples/templates/template.yaml \
    -e access_lists='{"al-hq-in": [{"action": "remark", "text": "Allow traffic from hq to local office"}, {"action": "permit", "src": "10.0.0.0/22", "dst": "10.100.0.0/24"}]}' \
    -e message=world \
    -v
    ---------- [ExtraVars] ----------
    {
      "access_lists": {
        "al-hq-in": [
          {
            "action": "remark",
            "text": "Allow traffic from hq to local office"
          },
          {
            "action": "permit",
            "src": "10.0.0.0/22",
            "dst": "10.100.0.0/24"
          }
        ]
      },
      "message": "world"
    } 
    
    ---------- [Template] ----------
    {% for acl, acl_lines in access_lists.items() %}(1)
    ip access-list extended {{ acl }}
      {% for line in acl_lines %}(2)
        (3){% if line.action == "remark" %}
        remark {{ line.text }}
        (4){% elif line.action == "permit" %}
        permit {{ line.src }} {{ line.dst }}
        (5){% endif %}
      {% endfor %}(6)
    {% endfor %}(7)
    hello {{ message }}!
    # All ACLs have been generated 
    
    (1)
    ip access-list extended al-hq-in
    (2)
        (3)    remark Allow traffic from hq to local office
        (4)(2)
        (3)    permit 10.0.0.0/22 10.100.0.0/24
        (5)(6)
    (7)
    hello world!
    # All ACLs have been generated
    
  • Use directory option

    ➜ jinja render -d examples/data/data.yaml -t examples/ -o test/
    ➜ tree test/
    test/
    ├── config
    │   ├── example.ini
    │   └── example.properties
    ├── data
    │   ├── data.json
    │   └── data.yaml
    └── templates
        ├── lookup.yaml
        └── template.yaml
    
    3 directories, 6 files
    ➜ cat test/templates/template.yaml
    (1)
    ip access-list extended al-hq-in
    (2)
        (3)    remark Allow traffic from hq to local office
        (4)(2)
        (3)    permit 10.0.0.0/22 10.100.0.0/24
        (5)(6)
    (7)
    hello jinja!
    # All ACLs have been generated
    

Project details


Download files

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

Source Distribution

jinja2-tools-1.0.8.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

jinja2_tools-1.0.8-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file jinja2-tools-1.0.8.tar.gz.

File metadata

  • Download URL: jinja2-tools-1.0.8.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for jinja2-tools-1.0.8.tar.gz
Algorithm Hash digest
SHA256 9abfec5aea736fe55911ac5d073af8f24921230bd3c7f1a103ec2226d60e2cc3
MD5 9297dfbfce61fcdd685507efcbe288a9
BLAKE2b-256 536ee4517920c1d7aa42b3f828e13e101ff36b0bce44633faee43e5c32006fe6

See more details on using hashes here.

File details

Details for the file jinja2_tools-1.0.8-py3-none-any.whl.

File metadata

File hashes

Hashes for jinja2_tools-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 b345288cdf4c2d63fad24504bf4a5e948aeefb01f31bc6305aeca8b17ff0a43d
MD5 98313f235f9f4bc1b3e94b192889369d
BLAKE2b-256 f5c79e307ab39f2a1f2899d2f49f1b66dea62a79deda2bc3171d8f5dbdfbd291

See more details on using hashes here.

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