diff --git a/src/beefore/__main__.py b/src/beefore/__main__.py index c4e86ae..344c287 100644 --- a/src/beefore/__main__.py +++ b/src/beefore/__main__.py @@ -15,6 +15,7 @@ def main(): parser = ArgumentParser() parser.add_argument('--version', action='version', version=__version__) + parser.add_argument('--verbosity', '-v', dest='verbosity', action='count') # GitHub required arguments... username_arg = parser.add_argument( @@ -85,6 +86,7 @@ def main(): directory=options.directory, repository=repository, branch=options.branch, + verbosity=options.verbosity, ) except git.InvalidGitRepositoryError: @@ -115,6 +117,7 @@ def main(): repo_path=options.repo_path, pull_request=options.pull_request, sha=options.sha, + verbosity=options.verbosity, ) print() diff --git a/src/beefore/checks/dco.py b/src/beefore/checks/dco.py index d83265b..22e05ed 100644 --- a/src/beefore/checks/dco.py +++ b/src/beefore/checks/dco.py @@ -23,7 +23,7 @@ def prepare(directory): pass -def check(directory, diff_content, commit): +def check(directory, diff_content, commit, verbosity): expected_signoff = '\nSigned-off-by: ' if expected_signoff in commit['message']: diff --git a/src/beefore/checks/eslint.py b/src/beefore/checks/eslint.py index 4658bcc..1c5991b 100644 --- a/src/beefore/checks/eslint.py +++ b/src/beefore/checks/eslint.py @@ -116,25 +116,36 @@ def prepare(directory): install_eslint_config(directory) -def check(directory, diff_content, commit): +def check(directory, diff_content, commit, verbosity): results = [] lint_results = Lint.find(directory=directory) diff_mappings = diff.positions(directory, diff_content) for filename, problems in lint_results.items(): - print(" * %s" % filename) + file_seen = False if filename in diff_mappings: for problem in sorted(problems, key=lambda p: p.line): try: position = diff_mappings[filename][problem.line] + if not file_seen: + print(" * %s" % filename) + file_seen = True print(' - %s' % problem) results.append((problem, position)) except KeyError: # Line doesn't exist in the diff; so we can ignore this problem - print(' - Line %s not in diff' % problem.line) + if verbosity: + if not file_seen: + print(" * %s" % filename) + file_seen = True + print(' - Line %s not in diff' % problem.line) else: # File has been changed, but wasn't in the diff - print(' - file not in diff') + if verbosity: + if not file_seen: + print(" * %s" % filename) + file_seen = True + print(' - file not in diff') return results diff --git a/src/beefore/checks/javacheckstyle.py b/src/beefore/checks/javacheckstyle.py index 70624c2..08c2074 100644 --- a/src/beefore/checks/javacheckstyle.py +++ b/src/beefore/checks/javacheckstyle.py @@ -62,25 +62,36 @@ def prepare(directory): pass -def check(directory, diff_content, commit): +def check(directory, diff_content, commit, verbosity): results = [] lint_results = Lint.find(directory=directory) diff_mappings = diff.positions(directory, diff_content) for filename, problems in lint_results.items(): - print(" * %s" % filename) + file_seen = False if filename in diff_mappings: for problem in sorted(problems, key=lambda p: p.line): try: position = diff_mappings[filename][problem.line] + if not file_seen: + print(" * %s" % filename) + file_seen = True print(' - %s' % problem) results.append((problem, position)) except KeyError: # Line doesn't exist in the diff; so we can ignore this problem - print(' - Line %s not in diff' % problem.line) + if verbosity: + if not file_seen: + print(" * %s" % filename) + file_seen = True + print(' - Line %s not in diff' % problem.line) else: # File has been changed, but wasn't in the diff - print(' - file not in diff') + if verbosity: + if not file_seen: + print(" * %s" % filename) + file_seen = True + print(' - file not in diff') return results diff --git a/src/beefore/checks/pycodestyle.py b/src/beefore/checks/pycodestyle.py index ccf0597..4627ab0 100644 --- a/src/beefore/checks/pycodestyle.py +++ b/src/beefore/checks/pycodestyle.py @@ -68,25 +68,36 @@ def prepare(directory): pass -def check(directory, diff_content, commit): +def check(directory, diff_content, commit, verbosity): results = [] lint_results = Lint.find(directory=directory) diff_mappings = diff.positions(directory, diff_content) for filename, problems in lint_results.items(): - print(" * %s" % filename) + file_seen = False if filename in diff_mappings: for problem in sorted(problems, key=lambda p: p.line): try: position = diff_mappings[filename][problem.line] + if not file_seen: + print(" * %s" % filename) + file_seen = True print(' - %s' % problem) results.append((problem, position)) except KeyError: # Line doesn't exist in the diff; so we can ignore this problem - print(' - Line %s not in diff' % problem.line) + if verbosity: + if not file_seen: + print(" * %s" % filename) + file_seen = True + print(' - Line %s not in diff' % problem.line) else: # File has been changed, but wasn't in the diff - print(' - file not in diff') + if verbosity: + if not file_seen: + print(" * %s" % filename) + file_seen = True + print(' - file not in diff') return results diff --git a/src/beefore/github.py b/src/beefore/github.py index 58e4242..fe3fa43 100644 --- a/src/beefore/github.py +++ b/src/beefore/github.py @@ -4,7 +4,7 @@ from github3.exceptions import GitHubError -def check(check_module, directory, username, password, repo_path, pull_request, sha): +def check(check_module, directory, username, password, repo_path, pull_request, sha, verbosity): try: github = github3.login(username, password=password) except GitHubError as ghe: @@ -56,7 +56,8 @@ def check(check_module, directory, username, password, repo_path, pull_request, problems = check_module.check( directory=directory, diff_content=diff_content, - commit=commit.commit + commit=commit.commit, + verbosity=verbosity, ) for problem, position in problems: diff --git a/src/beefore/local.py b/src/beefore/local.py index 082e116..6d810a0 100644 --- a/src/beefore/local.py +++ b/src/beefore/local.py @@ -44,7 +44,7 @@ def full_diff(repository, branch='master'): return content -def check(check_module, directory, repository, branch): +def check(check_module, directory, repository, branch, verbosity): print("Running %s check..." % check_module.__name__) print('==========' * 8) problems = check_module.check( @@ -52,7 +52,8 @@ def check(check_module, directory, repository, branch): diff_content=full_diff(repository, branch=branch), commit={ 'message': repository.commit().message - } + }, + verbosity=verbosity, ) print('==========' * 8)