From 354a1976c1a468ca777dc368f05126d0aaff8002 Mon Sep 17 00:00:00 2001 From: Dennis Twardowsky Date: Tue, 21 Dec 2021 15:57:57 +0100 Subject: [PATCH] Restructuring project --- README.md | 0 setup.py | 32 ++++++++++++++++++++++ renderTemplate.py => src/renderTemplate.py | 15 +++++++++- template/testenv.tpl | 3 -- {template => test/template}/test.tpl | 0 test/template/testenv.tpl | 6 ++++ {testfiles => test}/test.ini | 0 {testfiles => test}/test.json | 0 {testfiles => test}/test.toml | 0 {testfiles => test}/test.yaml | 0 10 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 README.md create mode 100644 setup.py rename renderTemplate.py => src/renderTemplate.py (90%) delete mode 100644 template/testenv.tpl rename {template => test/template}/test.tpl (100%) create mode 100644 test/template/testenv.tpl rename {testfiles => test}/test.ini (100%) rename {testfiles => test}/test.json (100%) rename {testfiles => test}/test.toml (100%) rename {testfiles => test}/test.yaml (100%) diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..334fe82 --- /dev/null +++ b/setup.py @@ -0,0 +1,32 @@ +import setuptools + +with open('requirements.txt') as f: + required = f.read().splitlines() + +with open("README.md", "r", encoding="utf-8") as fh: + long_description = fh.read() + +setuptools.setup( + name="JinjaTemplateHelper", + version="0.1.0", + author="Dennis Twardowsky", + author_email="dennis@devpty.de", + description="Helper script for processing Jinja templates", + #long_description=long_description, + #long_description_content_type="text/markdown", + #url="https://github.com/pypa/sampleproject", + #project_urls={ + # "Bug Tracker": "https://github.com/pypa/sampleproject/issues", + #}, + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], + scripts=[ + "src/renderTemplate.py" + ], + packages=setuptools.find_packages(where="src"), + install_requires=required, + python_requires=">=3.6", +) diff --git a/renderTemplate.py b/src/renderTemplate.py similarity index 90% rename from renderTemplate.py rename to src/renderTemplate.py index 1b7a89c..c73b684 100755 --- a/renderTemplate.py +++ b/src/renderTemplate.py @@ -6,6 +6,7 @@ import os import socket import sys +import jinja2 import toml import yaml from dotenv import dotenv_values @@ -44,6 +45,17 @@ jenv = Environment(autoescape=True, optimized=True) +# Jinja Context Functions +@jinja2.pass_context +def get_filtered_variables(c, filter_str=None): + ret_val = {} + for key, value in c.items(): + if not callable(value) and (not filter_str or filter_str in key): + ret_val[key.replace(filter_str, '') if key.startswith(filter_str) or key.endswith(filter_str) else key] \ + = value + return ret_val.items() + + # Jinja Filters # ------------- def filter_env(name, defvalue=""): @@ -75,6 +87,7 @@ jenv.filters['ldap_dn'] = filter_domain2ldap jenv.filters['hostbyaddr'] = filter_hostbyaddr jenv.filters['hostbyname'] = filter_hostbyname +jenv.globals['variables'] = get_filtered_variables # Loader # ------ @@ -162,7 +175,7 @@ if __name__ == '__main__': # If template was found if tpl: if args.env_file: - content = os.environ | dotenv_values(".env") + content = os.environ | dotenv_values("../test/.env") elif args.yaml_file: content = load_yaml_file(args.yaml_file) elif args.json_file: diff --git a/template/testenv.tpl b/template/testenv.tpl deleted file mode 100644 index 2753822..0000000 --- a/template/testenv.tpl +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Type": "{{ TESTVAR }}", -} diff --git a/template/test.tpl b/test/template/test.tpl similarity index 100% rename from template/test.tpl rename to test/template/test.tpl diff --git a/test/template/testenv.tpl b/test/template/testenv.tpl new file mode 100644 index 0000000..aed2aef --- /dev/null +++ b/test/template/testenv.tpl @@ -0,0 +1,6 @@ +{ + "Type": "{{ TESTVAR }}", +{% for item,value in variables("WWW_DOMAIN_") %} + "{{ item }}": "{{ value }}", +{% endfor %} +} diff --git a/testfiles/test.ini b/test/test.ini similarity index 100% rename from testfiles/test.ini rename to test/test.ini diff --git a/testfiles/test.json b/test/test.json similarity index 100% rename from testfiles/test.json rename to test/test.json diff --git a/testfiles/test.toml b/test/test.toml similarity index 100% rename from testfiles/test.toml rename to test/test.toml diff --git a/testfiles/test.yaml b/test/test.yaml similarity index 100% rename from testfiles/test.yaml rename to test/test.yaml