Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ekadanuarta
GitHub Repository: ekadanuarta/Tool-X
Path: blob/main/modules/menu.py
974 views
1
import os
2
import json
3
from time import sleep
4
from .logo import *
5
from .system import *
6
7
red="\033[1;31m"
8
green="\033[1;32m"
9
yellow="\033[1;33m"
10
blue="\033[1;34m"
11
violate="\033[1;37m"
12
nc="\033[00m"
13
14
class main:
15
def install_tools(self):
16
while True:
17
tool=tools()
18
num=1
19
total=len(tool.names)
20
os.system("clear")
21
logo.install_tools()
22
print(f"\007")
23
for tool_name in tool.names:
24
print (f" {green}[ {violate}{num} {green}] {yellow}Install {green}{tool_name}{nc}")
25
num+=1
26
print(f"")
27
logo.back()
28
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
29
if cmd=="00" or cmd=="back":
30
self.menu()
31
break
32
else:
33
try:
34
if int(cmd)>=1 and int(cmd)<=int(total):
35
os.system("clear")
36
logo.installing()
37
print(f"{green}Installing ....{nc}")
38
tool.install(tool.names[int(cmd)-1])
39
else:
40
print(f"\007{red}Sorry,{violate} '{cmd}' {blue}: {red}invalid input !!{nc}")
41
sleep(1)
42
except ValueError:
43
print(f"\007{red}Sorry,{violate} '{cmd}' {blue}: {red}invalid input !!{nc}")
44
sleep(1)
45
46
def category(self):
47
while True:
48
tool=tools()
49
total=len(tool.category)
50
num=1
51
os.system("clear")
52
logo.tool_header()
53
print(f"")
54
for cat in tool.category:
55
print (f" {green}[ {violate}{num} {green}] {yellow}{tool.category_data[cat]}{nc}")
56
num+=1
57
print(f"")
58
logo.back()
59
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
60
if cmd=="00" or cmd=="back":
61
self.menu()
62
break
63
else:
64
try:
65
if int(cmd) in range(1,int(total)+1):
66
while True:
67
print(int(cmd)-1)
68
print(tool.category[int(cmd)-1])
69
cnt=1
70
os.system("clear")
71
logo.tool_header()
72
print(f"")
73
tmp_cat_tool=[]
74
for i in tool.names:
75
if tool.category[int(cmd)-1] in tool.data[i]["category"]:
76
tmp_cat_tool.append(tool.data[i]['name'])
77
print(f" {green}[ {violate}{cnt} {green}] {yellow}Install {green}{tool.data[i]['name']}{nc}")
78
cnt+=1
79
print(f"")
80
logo.back()
81
tcmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
82
if tcmd=="00" or tcmd=="back":
83
break
84
else:
85
try:
86
cat_total=len(tmp_cat_tool)
87
if int(tcmd) in range(1,int(cat_total)+1):
88
os.system("clear")
89
logo.installing()
90
print(f"{green}Installing ....{nc}")
91
tool.install(tmp_cat_tool[int(tcmd)-1])
92
else:
93
print(f"\007{red}Sorry,{violate} '{tcmd}' {blue}: {red}invalid input !!{nc}")
94
sleep(1)
95
except ValueError:
96
print(f"\007{red}Sorry,{violate} '{tcmd}' {blue}: {red}invalid input !!{nc}")
97
sleep(1)
98
else:
99
print(f"\007{red}Sorry,{violate} '{cmd}' {blue}: {red}invalid input !!{nc}")
100
sleep(1)
101
except ValueError:
102
print(f"\007{red}Sorry,{violate} '{cmd}' {blue}: {red}invalid input !!{nc}")
103
sleep(1)
104
105
def update(self):
106
while True:
107
os.system("clear")
108
logo.update()
109
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
110
if cmd=="1":
111
system=sys()
112
if system.connection():
113
os.system("clear")
114
logo.updating()
115
if system.sudo != None:
116
if os.path.exists(system.home+"/Tool-X"):
117
pass
118
else:
119
os.system(system.sudo+" git clone https://github.com/rajkumardusad/Tool-X.git "+system.home+"/Tool-X")
120
if os.path.exists(system.home+"/Tool-X/install.aex"):
121
os.system("cd "+system.home+"/Tool-X && "+system.sudo+" sh install.aex")
122
if os.path.exists(system.bin+"/Tool-X") and os.path.exists(system.conf_dir+"/Tool-X"):
123
os.system("clear")
124
logo.updated()
125
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
126
else:
127
os.system("clear")
128
logo.update_error()
129
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
130
else:
131
os.system("clear")
132
logo.update_error()
133
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
134
else:
135
if os.path.exists(system.home+"/Tool-X"):
136
pass
137
else:
138
os.system("git clone https://github.com/rajkumardusad/Tool-X.git "+system.home+"/Tool-X")
139
if os.path.exists(system.home+"/Tool-X/install.aex"):
140
os.system("cd "+system.home+"/Tool-X && sh install.aex")
141
if os.path.exists(system.bin+"/Tool-X") and os.path.exists(system.conf_dir+"/Tool-X"):
142
os.system("clear")
143
logo.updated()
144
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
145
else:
146
os.system("clear")
147
logo.update_error()
148
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
149
else:
150
os.system("clear")
151
logo.update_error()
152
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
153
else:
154
os.system("clear")
155
logo.nonet()
156
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
157
elif cmd=="0" or cmd=="back":
158
self.menu()
159
break
160
else:
161
print(f"\007{red}Sorry,{violate} '{cmd}' {blue}: {red}invalid input !!{nc}")
162
sleep(1)
163
164
def about(self):
165
while True:
166
tool=tools()
167
total=len(tool.names)
168
os.system("clear")
169
logo.about(total)
170
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
171
self.menu()
172
break
173
174
@classmethod
175
def menu(self):
176
while True:
177
tool=tools()
178
total=len(tool.names)
179
os.system("clear")
180
logo.menu(total)
181
cmd=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
182
if cmd == "1":
183
self.install_tools(self)
184
break
185
elif cmd == "2":
186
self.category(self)
187
break
188
elif cmd == "3":
189
self.update(self)
190
break
191
elif cmd == "4":
192
self.about(self)
193
break
194
elif cmd=="x" or cmd=="X" or cmd=="exit":
195
os.system("clear")
196
logo.exit()
197
break
198
elif cmd=="rm -t" or cmd=="rm -T" or cmd=="uninstall tool-x" or cmd=="unistall Tool-X":
199
system=sys()
200
if system.sudo:
201
os.system(system.sudo+" rm -rf "+system.bin+"/Tool-X")
202
os.system(system.sudo+" rm -rf "+system.bin+"/toolx")
203
os.system(system.sudo+" rm -rf "+system.conf_dir+"/Tool-X")
204
else:
205
os.system("rm -rf "+system.bin+"/Tool-X")
206
os.system("rm -rf "+system.bin+"/toolx")
207
os.system("rm -rf "+system.conf_dir+"/Tool-X")
208
os.system("clear")
209
logo.exit()
210
break
211
else:
212
print(f"\007{red}Sorry,{violate} '{cmd}' {blue}: {red}invalid input !!{nc}")
213
sleep(1)
214
215
class tools:
216
data=None
217
names=None
218
category=None
219
category_data=None
220
def __init__(self):
221
system=sys()
222
with open(system.conf_dir+"/Tool-X/core/data.json") as data_file:
223
self.data=json.load(data_file)
224
with open(system.conf_dir+"/Tool-X/core/cat.json") as cat_file:
225
self.category_data=json.load(cat_file)
226
self.names=list(self.data.keys())
227
self.category=list(self.category_data.keys())
228
229
def install(self,name):
230
package_name=self.data[name]["package_name"]
231
package_manager=self.data[name]["package_manager"]
232
url=self.data[name]["url"]
233
req=list(self.data[name]["dependency"])
234
system=sys()
235
236
if system.connection():
237
if len(req)!=0 and req[0]!=None:
238
for dep in req:
239
if os.path.exists(system.bin+"/"+dep):
240
pass
241
else:
242
if system.sudo != None:
243
os.system(system.sudo+" "+system.pac+" install "+dep+" -y")
244
else:
245
os.system(system.pac+" install "+dep+" -y")
246
247
if package_manager=="package_manager":
248
if os.path.exists(system.bin+"/"+package_name):
249
os.system("clear")
250
logo.already_installed(name)
251
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
252
else:
253
if system.sudo != None:
254
os.system(system.sudo+" "+system.pac+" install "+package_name+" -y")
255
else:
256
os.system(system.pac+" install "+package_name+" -y")
257
# check tool is installed or not
258
if os.path.exists(system.bin+"/"+package_name):
259
os.system("clear")
260
logo.installed(name)
261
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
262
else:
263
os.system("clear")
264
logo.not_installed(name)
265
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
266
267
elif package_manager=="git":
268
if os.path.exists(system.home+"/"+package_name):
269
os.system("clear")
270
logo.already_installed(name)
271
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
272
else:
273
if system.sudo != None:
274
os.system(system.sudo+" git clone "+url+" "+system.home+"/"+package_name)
275
else:
276
os.system("git clone "+url+" "+system.home+"/"+package_name)
277
# check tool is installed or not
278
if os.path.exists(system.home+"/"+package_name):
279
os.system("clear")
280
logo.installed(name)
281
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
282
else:
283
os.system("clear")
284
logo.not_installed(name)
285
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
286
287
elif package_manager=="wget":
288
if os.path.exists(system.home+"/"+package_name):
289
os.system("clear")
290
logo.already_installed(name)
291
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
292
else:
293
if system.sudo != None:
294
os.system(system.sudo+" wget "+url+" -o "+system.home+"/"+package_name)
295
else:
296
os.system("wget "+url+" -o "+system.home+"/"+package_name)
297
# check tool is installed or not
298
if os.path.exists(system.home+"/"+package_name):
299
os.system("clear")
300
logo.installed(name)
301
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
302
else:
303
os.system("clear")
304
logo.not_installed(name)
305
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
306
307
elif package_manager=="curl":
308
if os.path.exists(system.home+"/"+package_name):
309
os.system("clear")
310
logo.already_installed(name)
311
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
312
else:
313
if system.sudo != None:
314
os.system(system.sudo+" curl "+url+" -o "+system.home+"/"+package_name)
315
else:
316
os.system("curl "+url+" -o "+system.home+"/"+package_name)
317
# check tool is installed or not
318
if os.path.exists(system.home+"/"+package_name):
319
os.system("clear")
320
logo.installed(name)
321
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
322
else:
323
os.system("clear")
324
logo.not_installed(name)
325
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
326
else:
327
os.system("clear")
328
logo.nonet()
329
tmp=input(f"{blue}Tool-X{nc}@{blue}space {yellow}$ {nc}")
330
331