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()
 | 
