4 # Copyright (c) 2017 Vojtech Horky
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
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
41 def __init__(self
, disable_colors
):
42 use_colors
= not disable_colors
52 self
.color_reset
= colorama
.Style
.RESET_ALL
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
,
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
)
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
)