tools: Add pep8 linter.
This commit adds the tools/lint script to run the pep8 linter
as well as modifies .travis.yml to run the linter in Travis.
MODIFY
.travis.yml
.travis.yml
@@ -5,5 +5,5 @@ install:
- pip install .
- bots_api/provision.py
script:
- # TODO run linter here
+ - tools/lint
- bots_api/test-bots

ADD
tools/lint
+#! /usr/bin/env python
+
+from pep8 import check_pep8
+from server_lib import lister
+
+import sys
+import optparse
+from typing import cast, Callable, Dict, Iterator, List
+
+EXCLUDED_FILES = [
+ # This is an external file that doesn't comply with our codestyle
+ 'integrations/perforce/git_p4.py',
+]
+
+def lint_all(args, options):
+
+ by_lang = cast(Dict[str, List[str]],
+ lister.list_files(args, modified_only=options.modified,
+ ftypes=['py', 'sh', 'js', 'pp', 'css', 'handlebars',
+ 'html', 'json', 'md', 'txt', 'text', 'yaml'],
+ use_shebang=True, group_by_ftype=True, exclude=EXCLUDED_FILES))
+ failed = check_pep8(by_lang['py'])
+ return failed
+
+def run():
+ # type: () -> None
+ parser = optparse.OptionParser()
+ parser.add_option('--modified', '-m',
+ action='store_true',
+ help='Only check modified files')
+ (options, args) = parser.parse_args()
+ failed = lint_all(args, options)
+ sys.exit(1 if failed else 0)
+
+if __name__ == '__main__':
+ run()

tools: Add pep8 linter.

This commit adds the tools/lint script to run the pep8 linter
as well as modifies .travis.yml to run the linter in Travis.