diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..e0b0e2a --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +language: python +python: + - "2.7" + - "3.4" + - "3.5" +script: + - pip install sphinx + - python misc/lint.py + - make html \ No newline at end of file diff --git a/misc/lint.py b/misc/lint.py new file mode 100644 index 0000000..745261e --- /dev/null +++ b/misc/lint.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +"""Check for tabs and trailing whitespace in text files in all subdirs. + +Any other automatic checks should be in this file too. +""" + +import os +import sys + +text_extensions = ('rst', 'md', 'txt', 'html', 'css', 'js') + + +def lint(): + """Run linters on all files, print problem files.""" + print('Checking for tabs or trailing whitespace...') + failed = False + for root, _, files in os.walk('.'): + for f in files: + fname = os.path.join(root, f) + if '_build' in fname or not any( + fname.endswith(ext) for ext in text_extensions): + continue + with open(fname, encoding='utf-8') as fh: + if '\t' in fh.read(): + failed = True + print('ERROR: tabs found in {}'.format(fname)) + if any(line.replace('\n', '') != line.rstrip() + for line in fh.readlines()): + failed = True + print('ERROR: trailing whitespace in {}'.format(fname)) + if failed: + print('Use your text editor to convert tabs to spaces ' + 'or trim trailing whitespace with minimal effort.') + sys.exit(failed) + print('All files are OK') + + +if __name__ == '__main__': + lint()