39 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#! /usr/bin/env python
 | 
						|
 | 
						|
from pep8 import check_pep8
 | 
						|
from custom_check import build_custom_checkers
 | 
						|
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
 | 
						|
    'zulip/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))
 | 
						|
    check_custom_checks_py, check_custom_checks_nonpy = build_custom_checkers(by_lang)
 | 
						|
    return any([check_pep8(by_lang['py']),
 | 
						|
                check_custom_checks_py(),
 | 
						|
                check_custom_checks_nonpy()])
 | 
						|
 | 
						|
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()
 |