2017-07-06 18:56:46 -04:00
|
|
|
#! /usr/bin/env python
|
|
|
|
|
|
|
|
from pep8 import check_pep8
|
2017-07-23 07:17:13 -04:00
|
|
|
from custom_check import build_custom_checkers
|
2017-07-06 18:56:46 -04:00
|
|
|
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
|
2017-07-18 00:19:51 -04:00
|
|
|
'zulip/integrations/perforce/git_p4.py',
|
2017-07-06 18:56:46 -04:00
|
|
|
]
|
|
|
|
|
|
|
|
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))
|
2017-07-23 07:17:13 -04:00
|
|
|
check_custom_checks_py, check_custom_checks_nonpy = build_custom_checkers(by_lang)
|
2017-08-16 04:21:37 -04:00
|
|
|
return any([check_pep8(by_lang['py']),
|
2017-07-23 07:17:13 -04:00
|
|
|
check_custom_checks_py(),
|
|
|
|
check_custom_checks_nonpy()])
|
2017-07-06 18:56:46 -04:00
|
|
|
|
|
|
|
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()
|