Jef*_*and 6 validation syntax jinja2 pre-commit-hook
我没有成功找到一个好的precommit钩子我可以用来验证Jinja2格式的文件是否格式良好而不试图替换变量.如果文件格式正确而不考虑变量是否可用,则目标是返回零代码为零,否则为1.
Vas*_*kis 12
你可以在Jinja中做到这一点,你只需要编写一个脚本来阅读和解析模板.
由于您只关心格式良好的模板,而不关心变量是否可用,因此应该很容易:
# filename: check_my_jinja.py
import sys
from jinja2 import Environment
env = Environment()
with open(sys.argv[1]) as template:
    env.parse(template.read())
Run Code Online (Sandbox Code Playgroud)
或者迭代所有模板的东西
# filename: check_my_jinja_recursive.py
import sys
import os
from jinja2 import Environment
env = Environment()
templates = [d + f for d, _, f in os.walk(mytemplates) if f.endswith('.jinja2')]
for template in templates:
    with open(template) as t:
        env.parse(t.read())
Run Code Online (Sandbox Code Playgroud)
如果你的语法不正确,你会得到一个 TemplateSyntaxError
所以你的precommit钩子可能看起来像
python check_my_jinja.py template.jinja2
python check_my_jinja_recursive.py /dir/templates_folder
Run Code Online (Sandbox Code Playgroud)