X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=tools%2Fpatman%2Fterminal.py;h=137265fc81541ebb77726cce41e17c771fd9126d;hb=a89c3a04bcb416102eaa0b7c398209dbc1c796a2;hp=963f2f891b1748ca08440d81f9ab6612b6053919;hpb=e752edcb6b22b2c42c8064d66a93f0910cac6fef;p=oweals%2Fu-boot.git diff --git a/tools/patman/terminal.py b/tools/patman/terminal.py index 963f2f891b..137265fc81 100644 --- a/tools/patman/terminal.py +++ b/tools/patman/terminal.py @@ -8,12 +8,88 @@ This module handles terminal interaction including ANSI color codes. """ +from __future__ import print_function + import os import sys # Selection of when we want our output to be colored COLOR_IF_TERMINAL, COLOR_ALWAYS, COLOR_NEVER = range(3) +# Initially, we are set up to print to the terminal +print_test_mode = False +print_test_list = [] + +class PrintLine: + """A line of text output + + Members: + text: Text line that was printed + newline: True to output a newline after the text + colour: Text colour to use + """ + def __init__(self, text, newline, colour): + self.text = text + self.newline = newline + self.colour = colour + + def __str__(self): + return 'newline=%s, colour=%s, text=%s' % (self.newline, self.colour, + self.text) + +def Print(text='', newline=True, colour=None): + """Handle a line of output to the terminal. + + In test mode this is recorded in a list. Otherwise it is output to the + terminal. + + Args: + text: Text to print + newline: True to add a new line at the end of the text + colour: Colour to use for the text + """ + if print_test_mode: + print_test_list.append(PrintLine(text, newline, colour)) + else: + if colour: + col = Color() + text = col.Color(colour, text) + print(text, end='') + if newline: + print() + else: + sys.stdout.flush() + +def SetPrintTestMode(): + """Go into test mode, where all printing is recorded""" + global print_test_mode + + print_test_mode = True + +def GetPrintTestLines(): + """Get a list of all lines output through Print() + + Returns: + A list of PrintLine objects + """ + global print_test_list + + ret = print_test_list + print_test_list = [] + return ret + +def EchoPrintTestLines(): + """Print out the text lines collected""" + for line in print_test_list: + if line.colour: + col = Color() + print(col.Color(line.colour, line.text), end='') + else: + print(line.text, end='') + if line.newline: + print() + + class Color(object): """Conditionally wraps text in ANSI color escape sequences.""" BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)