| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | 
							- from __future__ import absolute_import
 
- from __future__ import unicode_literals
 
- import logging
 
- import os
 
- import six
 
- import texttable
 
- from compose.cli import colors
 
- def get_tty_width():
 
-     tty_size = os.popen('stty size', 'r').read().split()
 
-     if len(tty_size) != 2:
 
-         return 0
 
-     _, width = tty_size
 
-     return int(width)
 
- class Formatter(object):
 
-     """Format tabular data for printing."""
 
-     def table(self, headers, rows):
 
-         table = texttable.Texttable(max_width=get_tty_width())
 
-         table.set_cols_dtype(['t' for h in headers])
 
-         table.add_rows([headers] + rows)
 
-         table.set_deco(table.HEADER)
 
-         table.set_chars(['-', '|', '+', '-'])
 
-         return table.draw()
 
- class ConsoleWarningFormatter(logging.Formatter):
 
-     """A logging.Formatter which prints WARNING and ERROR messages with
 
-     a prefix of the log level colored appropriate for the log level.
 
-     """
 
-     def get_level_message(self, record):
 
-         separator = ': '
 
-         if record.levelno == logging.WARNING:
 
-             return colors.yellow(record.levelname) + separator
 
-         if record.levelno == logging.ERROR:
 
-             return colors.red(record.levelname) + separator
 
-         return ''
 
-     def format(self, record):
 
-         if isinstance(record.msg, six.binary_type):
 
-             record.msg = record.msg.decode('utf-8')
 
-         message = super(ConsoleWarningFormatter, self).format(record)
 
-         return '{0}{1}'.format(self.get_level_message(record), message)
 
 
  |