2016-09-28 21:26:06 +00:00
|
|
|
#!/usr/bin/env python
|
2016-09-28 22:22:34 +00:00
|
|
|
from __future__ import print_function
|
2016-09-28 21:26:06 +00:00
|
|
|
from .options import OPTIONS
|
|
|
|
from .option_handler import cleanup_options
|
2016-09-28 21:57:02 +00:00
|
|
|
from .reporters import print_report, print_help, print_linters
|
2016-09-28 21:26:06 +00:00
|
|
|
from .git_lint import load_config, run_linters, git_base
|
|
|
|
from getopt import GetoptError
|
2016-09-28 21:57:02 +00:00
|
|
|
import sys
|
2016-09-28 21:26:06 +00:00
|
|
|
|
|
|
|
import gettext
|
|
|
|
_ = gettext.gettext
|
|
|
|
|
2016-09-28 21:57:02 +00:00
|
|
|
NAME = 'git-lint'
|
|
|
|
VERSION = '0.0.4'
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
2016-09-28 21:26:06 +00:00
|
|
|
if git_base is None:
|
|
|
|
sys.exit(_('A git repository was not found.'))
|
|
|
|
|
2016-09-28 21:57:02 +00:00
|
|
|
(options, filenames, excluded_commands) = cleanup_options(OPTIONS, sys.argv)
|
2016-09-28 21:26:06 +00:00
|
|
|
|
|
|
|
if len(excluded_commands) > 0:
|
|
|
|
print(_('These command line options were ignored due to option precedence.'))
|
|
|
|
for exc in excluded_commands:
|
|
|
|
print("\t{}".format(exc))
|
|
|
|
|
|
|
|
try:
|
|
|
|
config = load_config(options, git_base)
|
|
|
|
|
|
|
|
if 'help' in options:
|
|
|
|
print_help(OPTIONS, NAME)
|
|
|
|
return 0
|
|
|
|
|
|
|
|
if 'version' in options:
|
2016-09-28 21:57:02 +00:00
|
|
|
from .reporters import print_version
|
2016-09-28 21:26:06 +00:00
|
|
|
print_version(NAME, VERSION)
|
|
|
|
return 0
|
|
|
|
|
|
|
|
if 'linters' in options:
|
2016-09-28 21:57:02 +00:00
|
|
|
from .git_lint import get_linter_status
|
2016-09-28 21:26:06 +00:00
|
|
|
working_linter_names, broken_linter_names = get_linter_status(config)
|
2016-09-28 21:57:02 +00:00
|
|
|
print_linters(config, broken_linter_names)
|
2016-09-28 21:26:06 +00:00
|
|
|
return 0
|
|
|
|
|
|
|
|
(results,
|
|
|
|
unlintable_filenames,
|
|
|
|
cant_lint_filenames,
|
|
|
|
broken_linter_names,
|
|
|
|
unfindable_filenames) = run_linters(options, config, filenames)
|
2016-09-28 22:17:51 +00:00
|
|
|
|
2016-09-28 21:26:06 +00:00
|
|
|
print_report(results,
|
|
|
|
unlintable_filenames,
|
|
|
|
cant_lint_filenames,
|
|
|
|
broken_linter_names,
|
|
|
|
unfindable_filenames,
|
|
|
|
options)
|
2016-09-28 22:17:51 +00:00
|
|
|
|
2016-09-28 21:26:06 +00:00
|
|
|
if not len(results):
|
|
|
|
return 0
|
2016-09-28 22:17:51 +00:00
|
|
|
|
2016-09-28 21:26:06 +00:00
|
|
|
return max([i[2] for i in results if len(i)])
|
|
|
|
|
|
|
|
except GetoptError as err:
|
|
|
|
print_help(OPTIONS)
|
|
|
|
return 1
|
2016-09-28 22:17:51 +00:00
|
|
|
|
2016-09-28 21:26:06 +00:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
import sys
|
2016-09-28 21:57:02 +00:00
|
|
|
sys.exit(main())
|