summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@qt.io>2020-03-18 11:28:04 +0100
committerDominik Holland <dominik.holland@qt.io>2020-03-23 09:24:18 +0100
commit860d5b6efef41b20edb9ba22b315855e3cff0f4b (patch)
tree57332aa8bebc871d389ff331858e3d1a013f055b /src
parent4bc23304fc8a316e07eccbd3327a0af76aeb8954 (diff)
downloadqtivi-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-xsrc/tools/ivigenerator/generate.py6
-rw-r--r--src/tools/ivigenerator/generator/global_functions.py7
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")