diff options
author | Dominik Holland <dominik.holland@qt.io> | 2020-03-18 11:28:04 +0100 |
---|---|---|
committer | Dominik Holland <dominik.holland@qt.io> | 2020-03-23 09:24:18 +0100 |
commit | 860d5b6efef41b20edb9ba22b315855e3cff0f4b (patch) | |
tree | 57332aa8bebc871d389ff331858e3d1a013f055b /src | |
parent | 4bc23304fc8a316e07eccbd3327a0af76aeb8954 (diff) | |
download | qtivi-860d5b6efef41b20edb9ba22b315855e3cff0f4b.tar.gz |
ivigenerator: Fix broken jinja_error function
During the refactoring of the ivigenerator we switched to use
@contextfunction to retrieve the current qface file for the jinja_error
function.
While this worked fine, calling jinja_error from our internal filters
stopped working as we don't have the context there and switching all
filters to get the context first is tedious.
Instead switch back to use a global variable again.
Change-Id: I489d55e0577d0a73170ec80acd9138f8f4d91abc
Reviewed-by: Robert Griebl <robert.griebl@qt.io>
Diffstat (limited to 'src')
-rwxr-xr-x | src/tools/ivigenerator/generate.py | 6 | ||||
-rw-r--r-- | src/tools/ivigenerator/generator/global_functions.py | 7 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/tools/ivigenerator/generate.py b/src/tools/ivigenerator/generate.py index ba35506..ba6c213 100755 --- a/src/tools/ivigenerator/generate.py +++ b/src/tools/ivigenerator/generate.py @@ -50,7 +50,7 @@ from qface.generator import FileSystem, Generator from qface.watch import monitor import generator.builtin_config as builtin_config -from generator.global_functions import register_global_functions +import generator.global_functions as global_functions from generator.filters import register_filters from generator.rule_generator import CustomRuleGenerator @@ -61,7 +61,6 @@ log = logging.getLogger(__file__) builtinTemplatesPath = Path(here / 'templates') builtinTemplates = [os.path.splitext(f)[0] for f in os.listdir(builtinTemplatesPath) if fnmatch.fnmatch(f, '*.yaml')] - def validateType(srcFile, type, errorString): if type.is_interface: sys.exit("{0}: {1} of type 'interface' are not supported".format(srcFile, errorString)) @@ -116,12 +115,13 @@ def generate(tplconfig, moduleConfig, annotations, imports, src, dst): srcFile = os.path.basename(src[0]) srcBase = os.path.splitext(srcFile)[0] + global_functions.currentSrcFile = srcFile ctx = {'qtASVersion': builtin_config.config["VERSION"], 'srcFile': srcFile, 'srcBase': srcBase} generator = CustomRuleGenerator(search_path=[tplconfig, builtinTemplatesPath], destination=dst, context=ctx, modules=module_names) generator.env.keep_trailing_newline = True - register_global_functions(generator) + global_functions.register_global_functions(generator) register_filters(generator) validateSystem(srcFile, system) diff --git a/src/tools/ivigenerator/generator/global_functions.py b/src/tools/ivigenerator/generator/global_functions.py index 69c60e5..279baa2 100644 --- a/src/tools/ivigenerator/generator/global_functions.py +++ b/src/tools/ivigenerator/generator/global_functions.py @@ -45,6 +45,7 @@ import click from jinja2 import TemplateAssertionError from jinja2 import contextfunction +currentSrcFile = "" def jinjaTrace(): """ @@ -60,9 +61,7 @@ def jinjaTrace(): frame = frame.f_back return infos - -@contextfunction -def jinja_error(context, msg): +def jinja_error(msg): """ Throws an error for the current jinja template and the templates this is included from This can be used inside a filter to indicate problems with the passed arguments or direclty @@ -74,7 +73,7 @@ def jinja_error(context, msg): if len(infos) > 1: for info in infos[1:]: message = message + "\n{0}:{1}: instantiated from here".format(info[0], info[1]) - message = message + "\n{0}: instantiated from here".format(context["srcFile"]) + message = message + "\n{0}: instantiated from here".format(currentSrcFile) raise TemplateAssertionError(message, infos[0][1], "", infos[0][0]) raise TemplateAssertionError(msg, -1, "", "unknown") |