2016-06-21 2 views
2

Мне не удалось найти хороший крюк прекоммита, который я могу использовать для проверки того, что форматированный файл Jinja2 хорошо сформирован, не пытаясь заменить переменные. Цель - это то, что вернет нулевой код оболочки, если файл правильно сформирован, независимо от того, доступна ли переменная 1, иначе.Как проверить синтаксис Jinja без переменной интерполяции

ответ

7

Вы можете сделать это в самой 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 
Смежные вопросы