From 51d347d4e8390b70a4a76c6989087f5eb7bd49a2 Mon Sep 17 00:00:00 2001 From: Chris Woodall <cw@barrett.com> Date: Tue, 17 Oct 2017 11:54:45 -0400 Subject: [PATCH] Added jinja2 templates to defaults with jinja2defaults --- objdict_generate/resources/objdict_schema.yaml | 3 +++ objdict_generate/scripts/objdict_generate.py | 18 +++++++++++++++--- objdict_generate/version.py | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/objdict_generate/resources/objdict_schema.yaml b/objdict_generate/resources/objdict_schema.yaml index f8ab271c..bb87b5b9 100644 --- a/objdict_generate/resources/objdict_schema.yaml +++ b/objdict_generate/resources/objdict_schema.yaml @@ -75,6 +75,9 @@ mapping: constdefault: type: str required: no + jinja2default: + type: str + required: no export_for_mainboard: type: bool required: no diff --git a/objdict_generate/scripts/objdict_generate.py b/objdict_generate/scripts/objdict_generate.py index 0583eda5..1116571a 100755 --- a/objdict_generate/scripts/objdict_generate.py +++ b/objdict_generate/scripts/objdict_generate.py @@ -20,6 +20,9 @@ import sys import configparser import click +def fmt_add(a, b, format="%i"): + return format % (int(str(a), 0) + int(str(b), 0)) + def generate_eds_section(objdict): eds_config = configparser.ConfigParser() @@ -111,6 +114,16 @@ def cli(ctx, doc_dir, output_dir, master_dir, yaml_files): objdict['indexes'] = multikeysort(objdict['indexes'], ['index', 'subindex']) + env = jinja2.Environment(loader=jinja2.PackageLoader('objdict_generate', 'resources')) + env.globals['DataTypes'] = DataTypes + env.globals['node_id'] = objdict['node_id'] + env.filters['fmt_add'] = fmt_add + + # Go through and run templates on jinja2defaults fields + for index in objdict['indexes']: + if 'jinja2default' in index: + index["default"] = env.from_string(index["jinja2default"]).render() + company = {"name": "Barrett Technology, LLC", "email": "support@barrett.com"} @@ -126,10 +139,9 @@ def cli(ctx, doc_dir, output_dir, master_dir, yaml_files): eds_entries = generate_eds_section(objdict) + for output in outputs: - tmpl = jinja2.Template(get_resource_string( - output["template"]).decode("utf-8")) - tmpl.globals['DataTypes'] = DataTypes + tmpl = env.get_template(output["template"]) with open(output['name'], mode='w') as output_file: output_file.write(tmpl.render( date=arrow.now(), company=company, objdict=objdict, master=output.get("master"))) diff --git a/objdict_generate/version.py b/objdict_generate/version.py index 22937ef8..8f287fab 100644 --- a/objdict_generate/version.py +++ b/objdict_generate/version.py @@ -1,2 +1,2 @@ #!/usr/bin/env python3 -__version__ = "0.4.0" \ No newline at end of file +__version__ = "0.5.0" \ No newline at end of file -- GitLab