2016-06-21 10 views
2

Ich hatte keinen Erfolg bei der Suche nach einem guten Precommit-Hook, den ich verwenden kann, um zu überprüfen, ob eine Jinja2-formatierte Datei wohlgeformt ist, ohne Variablen zu ersetzen. Das Ziel ist etwas, das einen Shell-Code von Null zurückgibt, wenn die Datei wohlgeformt ist, ohne Rücksicht darauf, ob eine Variable verfügbar ist, andernfalls 1.Wie man Jinja-Syntax ohne variable Interpolation validiert

Antwort

7

Sie können dies innerhalb von Jinja selbst tun, Sie müssten nur ein Skript schreiben, um die Vorlage zu lesen und zu parsen.

Da Sie nur Sorge um wohlgeformte Vorlagen, und nicht, ob die Variablen zur Verfügung stehen, sollte es ziemlich einfach zu tun:

# filename: check_my_jinja.py 
import sys 
from jinja2 import Environment 

env = Environment() 
with open(sys.argv[1]) as template: 
    env.parse(template.read()) 

oder etwas, das alle Vorlagen iteriert

# 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()) 

Wenn Sie eine falsche Syntax haben, werden Sie eine so Ihr precommi

TemplateSyntaxError erhalten t Haken könnte aussehen wie

python check_my_jinja.py template.jinja2 
python check_my_jinja_recursive.py /dir/templates_folder 
Verwandte Themen