From a9498d28a7142bff4a151299c8330c599846ed84 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sat, 20 Feb 2016 22:15:23 -0800 Subject: [PATCH] Fall back to tput when terminal size information is missing --- pre_commit/output.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pre_commit/output.py b/pre_commit/output.py index d25100cc..a905cb45 100644 --- a/pre_commit/output.py +++ b/pre_commit/output.py @@ -1,5 +1,7 @@ from __future__ import unicode_literals +import os +import subprocess import sys from backports.shutil_get_terminal_size import get_terminal_size @@ -7,9 +9,21 @@ from backports.shutil_get_terminal_size import get_terminal_size from pre_commit import color from pre_commit import five -# TODO: smell: import side-effects -# TODO: https://github.com/chrippa/backports.shutil_get_terminal_size/issues/4 -COLS = get_terminal_size().columns or 80 + +def _get_cols_from_tput(): # pragma: no cover (fallback) + if not os.environ.get('TERM'): + return 80 + else: + return int( + subprocess.Popen( + ('tput', 'cols'), stdout=subprocess.PIPE, + ).communicate()[0] or + # Default in the case of no terminal + 80 + ) + + +COLS = get_terminal_size((0, 0)).columns or _get_cols_from_tput() def get_hook_message(