#!/usr/bin/env python from __future__ import absolute_import from __future__ import print_function from lib.css_parser import parse, CssParserException from typing import Iterable, Text import sys import glob import subprocess # check for the venv from lib import sanity_check sanity_check.check_venv(__file__) def validate(fn): # type: (Text) -> None text = open(fn).read() section_list = parse(text) if text != section_list.text(): print('%s seems to be broken:' % (fn,)) open('/var/tmp/pretty_css.txt', 'w').write(section_list.text()) subprocess.call(['diff', fn, '/var/tmp/pretty_css.txt'], stderr=subprocess.STDOUT) sys.exit(1) def check_our_files(filenames): # type: (Iterable[Text]) -> None for filename in filenames: try: validate(filename) except CssParserException as e: msg = ''' ERROR! Some CSS seems to be misformatted. {} See line {} in file {} '''.format(e.msg, e.token.line, filename) print(msg) sys.exit(1) if __name__ == '__main__': # If command arguments are provided, we only check those filenames. # Otherwise, we check all possible filenames. filenames = sys.argv[1:] if not filenames: filenames = glob.glob('static/styles/*.css') check_our_files(filenames)