Bump pillow to 10.2.0 (dependabot, see #5)
[ci.git] / hbuild / output.py
blob60ba5e49c3c437478cbe762be60b41cabd537a47
1 #!/usr/bin/env python3
4 # Copyright (c) 2017 Vojtech Horky
5 # All rights reserved.
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
9 # are met:
11 # - Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
13 # - Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in the
15 # documentation and/or other materials provided with the distribution.
16 # - The name of the author may not be used to endorse or promote products
17 # derived from this software without specific prior written permission.
19 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 from threading import Lock
32 import sys
34 class ConsolePrinter:
35 DEFAULT = 0
36 RED = 1
37 GREEN = 2
38 CYAN = 3
39 YELLOW = 4
41 def __init__(self, disable_colors):
42 use_colors = not disable_colors
43 if use_colors:
44 try:
45 import colorama
46 colorama.init()
47 except ImportError:
48 use_colors = False
50 if use_colors:
51 import colorama
52 self.color_reset = colorama.Style.RESET_ALL
53 self.colors = {
54 ConsolePrinter.DEFAULT: "",
55 ConsolePrinter.RED: colorama.Fore.RED,
56 ConsolePrinter.GREEN: colorama.Fore.GREEN,
57 ConsolePrinter.CYAN: colorama.Fore.CYAN,
58 ConsolePrinter.YELLOW: colorama.Fore.YELLOW,
60 else:
61 self.color_reset = ""
62 self.colors = {
63 ConsolePrinter.DEFAULT: "",
64 ConsolePrinter.RED: "",
65 ConsolePrinter.GREEN: "",
66 ConsolePrinter.CYAN: "",
67 ConsolePrinter.YELLOW: "",
70 # Lock guarding output synchronization
71 self.output_lock = Lock()
73 def print_(self, message):
74 with self.output_lock:
75 print(self.color_reset + message)
76 sys.stdout.flush()
78 def print_starting(self, message):
79 self.print_(" " + message)
81 def print_finished(self, color, prefix, message):
82 if not color in self.colors:
83 color = ConsolePrinter.DEFAULT
85 self.print_("[" + self.colors[color] + prefix + self.color_reset + "] " + message)
87 def print_debug(self, context, message):
88 self.print_finished(self.YELLOW, "debug " + context, message)
90 def print_warning(self, message):
91 self.print_finished(self.RED, "warn", message)
93 def print_fail(self, message):
94 self.print_finished(self.RED, "fail", message)
96 def print_ok(self, message):
97 self.print_finished(self.GREEN, " ok ", message)