2
我沒有成功找到一個很好的預提交鉤子,我可以用它來驗證Jinja2格式的文件是否格式良好,而不會嘗試替換變量。目標是如果文件格式良好而不考慮變量是否可用,則返回0的shell代碼,否則返回1。如何在沒有可變插值的情況下驗證Jinja語法
我沒有成功找到一個很好的預提交鉤子,我可以用它來驗證Jinja2格式的文件是否格式良好,而不會嘗試替換變量。目標是如果文件格式良好而不考慮變量是否可用,則返回0的shell代碼,否則返回1。如何在沒有可變插值的情況下驗證Jinja語法
你可以在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())
或東西,遍歷所有模板
# 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())
如果你有不正確的語法,你會得到一個TemplateSyntaxError
所以你precommi t勾可能看起來像
python check_my_jinja.py template.jinja2
python check_my_jinja_recursive.py /dir/templates_folder