55import pkg_resources
66import shutil
77import stat
8- import subprocess
98import sys
109from asottile .ordereddict import OrderedDict
1110from asottile .yaml import ordered_dump
1918from pre_commit .clientlib .validate_config import load_config
2019from pre_commit .jsonschema_extensions import remove_defaults
2120from pre_commit .logging_handler import LoggingHandler
21+ from pre_commit .output import get_hook_message
2222from pre_commit .repository import Repository
2323from pre_commit .staged_files_only import staged_files_only
2424from pre_commit .util import noop_context
2525
2626
2727logger = logging .getLogger ('pre_commit' )
2828
29- COLS = int (subprocess .Popen (['tput' , 'cols' ], stdout = subprocess .PIPE ).communicate ()[0 ])
30-
31- PASS_FAIL_LENGTH = 6
32-
3329
3430def install (runner ):
3531 """Install the pre-commit hooks."""
@@ -107,7 +103,8 @@ def autoupdate(runner):
107103 )
108104
109105 for repo_config in input_configs :
110- print ('Updating {0}...' .format (repo_config ['repo' ]), end = '' )
106+ sys .stdout .write ('Updating {0}...' .format (repo_config ['repo' ]))
107+ sys .stdout .flush ()
111108 try :
112109 new_repo_config = _update_repository (repo_config )
113110 except RepositoryCannotBeUpdatedError as error :
@@ -149,34 +146,30 @@ def _get_skips(environ):
149146 return set (skip .strip () for skip in skips .split (',' ) if skip .strip ())
150147
151148
152- def _print_no_files_skipped (hook , write , args ):
153- no_files_msg = '(no files to check) '
154- skipped_msg = 'Skipped'
155- write (
156- '{0}{1}{2}{3}\n ' .format (
157- hook ['name' ],
158- '.' * (
159- COLS -
160- len (hook ['name' ]) -
161- len (no_files_msg ) -
162- len (skipped_msg ) -
163- 1
164- ),
165- no_files_msg ,
166- color .format_color (skipped_msg , color .TURQUOISE , args .color ),
167- )
149+ def _hook_msg_start (hook , verbose ):
150+ return '{0}{1}' .format (
151+ '[{0}] ' .format (hook ['id' ]) if verbose else '' ,
152+ hook ['name' ],
168153 )
169154
170155
156+ def _print_no_files_skipped (hook , write , args ):
157+ write (get_hook_message (
158+ _hook_msg_start (hook , args .verbose ),
159+ postfix = '(no files to check) ' ,
160+ end_msg = 'Skipped' ,
161+ end_color = color .TURQUOISE ,
162+ use_color = args .color ,
163+ ))
164+
165+
171166def _print_user_skipped (hook , write , args ):
172- skipped_msg = 'Skipped'
173- write (
174- '{0}{1}{2}\n ' .format (
175- hook ['name' ],
176- '.' * (COLS - len (hook ['name' ]) - len (skipped_msg ) - 1 ),
177- color .format_color (skipped_msg , color .YELLOW , args .color ),
178- ),
179- )
167+ write (get_hook_message (
168+ _hook_msg_start (hook , args .verbose ),
169+ end_msg = 'Skipped' ,
170+ end_color = color .YELLOW ,
171+ use_color = args .color ,
172+ ))
180173
181174
182175def _run_single_hook (runner , repository , hook_id , args , write , skips = set ()):
@@ -199,12 +192,7 @@ def _run_single_hook(runner, repository, hook_id, args, write, skips=set()):
199192
200193 # Print the hook and the dots first in case the hook takes hella long to
201194 # run.
202- write (
203- '{0}{1}' .format (
204- hook ['name' ],
205- '.' * (COLS - len (hook ['name' ]) - PASS_FAIL_LENGTH - 1 ),
206- ),
207- )
195+ write (get_hook_message (_hook_msg_start (hook , args .verbose ), end_len = 6 ))
208196 sys .stdout .flush ()
209197
210198 retcode , stdout , stderr = repository .run_hook (
0 commit comments