From 5c1a7499cf3248f28f581c5a399d43b57110b48d Mon Sep 17 00:00:00 2001
From: Peter Cock
Date: Sat, 22 Aug 2020 23:17:57 +0100
Subject: [PATCH] Hide passed lines in --quiet mode
Downside is delay output on failed hooks
---
pre_commit/commands/run.py | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)
diff --git a/pre_commit/commands/run.py b/pre_commit/commands/run.py
index 5c3baff6..42a6e332 100644
--- a/pre_commit/commands/run.py
+++ b/pre_commit/commands/run.py
@@ -123,6 +123,7 @@ def _get_skips(environ: EnvironT) -> Set[str]:
SKIPPED = 'Skipped'
NO_FILES = '(no files to check)'
+FAILED = 'Failed'
def _subtle_line(s: str, use_color: bool) -> None:
@@ -176,7 +177,8 @@ def _run_single_hook(
out = b''
else:
# print hook and dots first in case the hook takes a while to run
- output.write(_start_msg(start=hook.name, end_len=6, cols=cols))
+ if not quiet:
+ output.write(_start_msg(start=hook.name, end_len=6, cols=cols))
if not hook.pass_filenames:
filenames = ()
@@ -189,16 +191,32 @@ def _run_single_hook(
# if the hook makes changes, fail the commit
files_modified = diff_before != diff_after
- if retcode or files_modified:
- print_color = color.RED
- status = 'Failed'
- else:
- print_color = color.GREEN
- status = 'Passed'
-
- output.write_line(color.format_color(status, print_color, use_color))
+ if not quiet:
+ # Finish the partial line of output...
+ if retcode or files_modified:
+ print_color = color.RED
+ status = FAILED
+ else:
+ print_color = color.GREEN
+ status = 'Passed'
+ output.write_line(
+ color.format_color(status, print_color, use_color),
+ )
if verbose or hook.verbose or retcode or files_modified:
+ if quiet:
+ # Normal would have written this in two stages:
+ output.write(
+ _full_msg(
+ start=hook.name,
+ postfix=NO_FILES,
+ end_msg=FAILED,
+ end_color=color.RED,
+ use_color=use_color,
+ cols=cols,
+ ),
+ )
+
_subtle_line(f'- hook id: {hook.id}', use_color)
if (verbose or hook.verbose) and duration is not None: