2016-06-21 5 views
2

Jinja2形式のファイルが変数を代入しようとせずに整形式であることを検証するために使用できる良いプリコミットフックを見つけることに成功しませんでした。目標は、変数が利用可能かどうかにかかわらず、ファイルが整形式である場合は0のシェルコードを返します。そうでなければ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 
関連する問題