FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
pre-commit/pre_commit/color.py at v5 · pre-commit/pre-commit · GitHub
pre-commit
pre-commit
Repository navigation
Code
Issues
17
(17)
Pull requests
8
(8)
Actions
Security and quality
Insights
Expand file tree
Breadcrumbs
pre-commit
/
pre_commit
/
color.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
109 lines (88 loc) · 3.14 KB
Breadcrumbs
pre-commit
/
pre_commit
/
color.py
Copy path
File metadata and controls
109 lines (88 loc) · 3.14 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
from
__future__
import
annotations
import
argparse
import
os
import
sys
if
sys
.
platform
==
'win32'
:
# pragma: no cover (windows)
def
_enable
()
->
None
:
from
ctypes
import
POINTER
from
ctypes
import
windll
from
ctypes
import
WinError
from
ctypes
import
WINFUNCTYPE
from
ctypes
.
wintypes
import
BOOL
from
ctypes
.
wintypes
import
DWORD
from
ctypes
.
wintypes
import
HANDLE
STD_ERROR_HANDLE
=
-
12
ENABLE_VIRTUAL_TERMINAL_PROCESSING
=
4
def
bool_errcheck
(
result
,
func
,
args
):
if
not
result
:
raise
WinError
()
return
args
GetStdHandle
=
WINFUNCTYPE
(
HANDLE
,
DWORD
)(
(
'GetStdHandle'
,
windll
.
kernel32
), ((
1
,
'nStdHandle'
),),
)
GetConsoleMode
=
WINFUNCTYPE
(
BOOL
,
HANDLE
,
POINTER
(
DWORD
))(
(
'GetConsoleMode'
,
windll
.
kernel32
),
((
1
,
'hConsoleHandle'
), (
2
,
'lpMode'
)),
)
GetConsoleMode
.
errcheck
=
bool_errcheck
SetConsoleMode
=
WINFUNCTYPE
(
BOOL
,
HANDLE
,
DWORD
)(
(
'SetConsoleMode'
,
windll
.
kernel32
),
((
1
,
'hConsoleHandle'
), (
1
,
'dwMode'
)),
)
SetConsoleMode
.
errcheck
=
bool_errcheck
# As of Windows 10, the Windows console supports (some) ANSI escape
# sequences, but it needs to be enabled using `SetConsoleMode` first.
#
# More info on the escape sequences supported:
# https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v=vs.85).aspx
stderr
=
GetStdHandle
(
STD_ERROR_HANDLE
)
flags
=
GetConsoleMode
(
stderr
)
SetConsoleMode
(
stderr
,
flags
|
ENABLE_VIRTUAL_TERMINAL_PROCESSING
)
try
:
_enable
()
except
OSError
:
terminal_supports_color
=
False
else
:
terminal_supports_color
=
True
else
:
# pragma: win32 no cover
terminal_supports_color
=
True
RED
=
'
\033
[41m'
GREEN
=
'
\033
[42m'
YELLOW
=
'
\033
[43;30m'
TURQUOISE
=
'
\033
[46;30m'
SUBTLE
=
'
\033
[2m'
NORMAL
=
'
\033
[m'
def
format_color
(
text
:
str
,
color
:
str
,
use_color_setting
:
bool
)
->
str
:
"""Format text with color.
Args:
text - Text to be formatted with color if `use_color`
color - The color start string
use_color_setting - Whether or not to color
"""
if
use_color_setting
:
return
f'
{
color
}
{
text
}
{
NORMAL
}
'
else
:
return
text
COLOR_CHOICES
=
(
'auto'
,
'always'
,
'never'
)
def
use_color
(
setting
:
str
)
->
bool
:
"""Choose whether to use color based on the command argument.
Args:
setting - Either `auto`, `always`, or `never`
"""
if
setting
not
in
COLOR_CHOICES
:
raise
ValueError
(
setting
)
return
(
setting
==
'always'
or
(
setting
==
'auto'
and
sys
.
stderr
.
isatty
()
and
terminal_supports_color
and
os
.
getenv
(
'TERM'
)
!=
'dumb'
)
)
def
add_color_option
(
parser
:
argparse
.
ArgumentParser
)
->
None
:
parser
.
add_argument
(
'--color'
,
default
=
os
.
environ
.
get
(
'PRE_COMMIT_COLOR'
,
'auto'
),
type
=
use_color
,
metavar
=
'{'
+
','
.
join
(
COLOR_CHOICES
)
+
'}'
,
help
=
'Whether to use color in output. Defaults to `%(default)s`.'
,
)
Back
|
FazBrowse Home
|
New Git URL