5
5
import re
6
6
7
7
8
- def isVersionAtLeastOrEqual (actualVersion : tuple [int , ...], expectedVersion : tuple [int , ...]) -> bool :
8
+ def isVersionAtLeastOrEqual (
9
+ actualVersion : tuple [int , ...], expectedVersion : tuple [int , ...]
10
+ ) -> bool :
9
11
if len (actualVersion ) < len (expectedVersion ):
10
12
return False
11
13
@@ -25,7 +27,9 @@ def getVersionFromOutput(output: str, versionRegex: str) -> tuple[int, ...]:
25
27
return ()
26
28
27
29
28
- def checkVersion (cmd : str , versionExpected : tuple [int , ...], versionCommand : str , versionRegex : str ) -> tuple [bool , tuple [int , ...]]:
30
+ def checkVersion (
31
+ cmd : str , versionExpected : tuple [int , ...], versionCommand : str , versionRegex : str
32
+ ) -> tuple [bool , tuple [int , ...]]:
29
33
try :
30
34
result = subprocess .check_output ([cmd , versionCommand ]).decode ("utf-8" )
31
35
actualVersion = getVersionFromOutput (result , versionRegex )
@@ -34,27 +38,35 @@ def checkVersion(cmd: str, versionExpected: tuple[int, ...], versionCommand: str
34
38
return False , ()
35
39
36
40
37
- def commandIsAvailable (cmd : str , versionExpected : tuple [int , ...] = (0 , 0 , 0 ), versionCommand : str = "--version" , versionRegex : str = r"\d+(\.\d+)+" ) -> bool :
41
+ def commandIsAvailable (
42
+ cmd : str ,
43
+ versionExpected : tuple [int , ...] = (0 , 0 , 0 ),
44
+ versionCommand : str = "--version" ,
45
+ versionRegex : str = r"\d+(\.\d+)+" ,
46
+ ) -> bool :
38
47
print (f"Checking if { cmd } is available... " , end = "" )
39
48
result = True
40
49
41
50
try :
42
51
cmd = shell .latest (cmd )
43
52
path = shell .which (cmd ) or cmd
44
53
versionMatch , version = checkVersion (
45
- cmd , versionExpected , versionCommand , versionRegex )
54
+ cmd , versionExpected , versionCommand , versionRegex
55
+ )
46
56
if not versionMatch :
47
57
if versionExpected == (0 , 0 , 0 ):
48
58
print (f"{ vt100 .RED } not found{ vt100 .RESET } " )
49
59
else :
50
60
print (f"{ vt100 .RED } too old{ vt100 .RESET } " )
51
61
print (
52
- f"Expected: { '.' .join (map (str , versionExpected ))} \n Actual: { '.' .join (map (str , version ))} " )
62
+ f"Expected: { '.' .join (map (str , versionExpected ))} \n Actual: { '.' .join (map (str , version ))} "
63
+ )
53
64
result = False
54
65
else :
55
66
print (f"{ vt100 .GREEN } ok{ vt100 .RESET } " )
56
67
print (
57
- f"{ vt100 .BRIGHT_BLACK } Command: { cmd } \n Location: { path } \n Version: { '.' .join (map (str , version ))} { vt100 .RESET } \n " )
68
+ f"{ vt100 .BRIGHT_BLACK } Command: { cmd } \n Location: { path } \n Version: { '.' .join (map (str , version ))} { vt100 .RESET } \n "
69
+ )
58
70
except Exception as e :
59
71
print (f" { e } " )
60
72
print (f"{ vt100 .RED } Error: { cmd } is not available{ vt100 .RESET } " )
@@ -74,7 +86,8 @@ def moduleIsAvailable(module: str) -> bool:
74
86
if hasattr (mod , "__version__" ):
75
87
version = mod .__version__
76
88
print (
77
- f"{ vt100 .BRIGHT_BLACK } Module: { module } \n Version: { version } \n Location: { path } { vt100 .RESET } \n " )
89
+ f"{ vt100 .BRIGHT_BLACK } Module: { module } \n Version: { version } \n Location: { path } { vt100 .RESET } \n "
90
+ )
78
91
79
92
return True
80
93
except Exception as e :
@@ -86,25 +99,26 @@ def moduleIsAvailable(module: str) -> bool:
86
99
def doctorCmd (args : Args ):
87
100
everythingIsOk = True
88
101
89
- everythingIsOk = everythingIsOk and moduleIsAvailable ("requests" )
90
- everythingIsOk = everythingIsOk and moduleIsAvailable ("graphviz" )
91
- everythingIsOk = everythingIsOk and moduleIsAvailable ("magic" )
92
- everythingIsOk = everythingIsOk and moduleIsAvailable ("cutekit" )
93
- everythingIsOk = everythingIsOk and moduleIsAvailable ("chatty" )
94
- everythingIsOk = everythingIsOk and commandIsAvailable (
95
- "qemu-system-x86_64" )
96
- everythingIsOk = everythingIsOk and commandIsAvailable (
97
- "clang" , versionExpected = (15 ,))
98
- everythingIsOk = everythingIsOk and commandIsAvailable (
99
- "clang++" , versionExpected = (15 ,))
100
- everythingIsOk = everythingIsOk and commandIsAvailable (
101
- "ld.lld" , versionExpected = (15 ,))
102
- everythingIsOk = everythingIsOk and commandIsAvailable ("nasm" )
103
- everythingIsOk = everythingIsOk and commandIsAvailable ("ninja" )
104
- everythingIsOk = everythingIsOk and commandIsAvailable (
105
- "cutekit" , versionCommand = "version" )
106
- everythingIsOk = everythingIsOk and commandIsAvailable ("chatty" )
107
- everythingIsOk = everythingIsOk and commandIsAvailable ("pkg-config" )
102
+ everythingIsOk = everythingIsOk & moduleIsAvailable ("requests" )
103
+ everythingIsOk = everythingIsOk & moduleIsAvailable ("graphviz" )
104
+ everythingIsOk = everythingIsOk & moduleIsAvailable ("magic" )
105
+ everythingIsOk = everythingIsOk & moduleIsAvailable ("cutekit" )
106
+ everythingIsOk = everythingIsOk & moduleIsAvailable ("chatty" )
107
+ everythingIsOk = everythingIsOk & commandIsAvailable ("qemu-system-x86_64" )
108
+ everythingIsOk = everythingIsOk & commandIsAvailable ("clang" , versionExpected = (15 ,))
109
+ everythingIsOk = everythingIsOk & commandIsAvailable (
110
+ "clang++" , versionExpected = (15 ,)
111
+ )
112
+ everythingIsOk = everythingIsOk & commandIsAvailable (
113
+ "ld.lld" , versionExpected = (15 ,)
114
+ )
115
+ everythingIsOk = everythingIsOk & commandIsAvailable ("nasm" )
116
+ everythingIsOk = everythingIsOk & commandIsAvailable ("ninja" )
117
+ everythingIsOk = everythingIsOk & commandIsAvailable (
118
+ "cutekit" , versionCommand = "version"
119
+ )
120
+ everythingIsOk = everythingIsOk & commandIsAvailable ("chatty" )
121
+ everythingIsOk = everythingIsOk & commandIsAvailable ("pkg-config" )
108
122
109
123
110
124
append (Cmd (None , "doctor" , "Check if all required commands are available" , doctorCmd ))
0 commit comments