-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstart.py
120 lines (88 loc) · 3.25 KB
/
start.py
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
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/env python3
import os,sys,random
import subprocess
from cmd_config import l_init, l_download, l_install
def red_print(text):
print('\033[5;31m{}\033[0m'.format(text))
def green_print(text):
print('\033[1;32m{}\033[0m'.format(text))
def flash_print(text):
print('\033[5;32m{}\033[0m'.format(text))
def get_list(li, start, end):
if start is not None and start < 0:
start = 0
if end is not None:
if end > len(li):
end = len(li)
if start is None and end is None:
return li
if start is None and end is not None:
return li[:end]
if start is not None and end is None:
return li[start:]
if start is not None and end is not None:
return li[start:end]
def exec_cmd(*,li_cmd, start, end, name, debug=False):
print("开始执行 {} 命令".format(name))
l = get_list(li_cmd, start, end)
_start = start
if _start is None:
_start = 0
if debug:
print('l', l)
for i, cmd in enumerate(l):
print(cmd)
ran = random.randint(0, len(l)-1)
if i == ran:
red_print("第 {} 条{}命令错误, {}".format(i+_start, name, cmd))
sys.exit(-1)
green_print("命令执行成功: {}".format(cmd))
return
for i, cmd in enumerate(l):
p = subprocess.Popen(cmd, shell=True, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr)
p.wait()
if p.returncode != 0:
red_print("第 {} 条{}命令错误, {}".format(i+_start, name, cmd))
print("解决错误之后从错误命令开始执行: start.py {} {}:".format(name, i+_start))
sys.exit(-1)
green_print("命令执行成功: {}".format(cmd))
def init(start, end):
exec_cmd(li_cmd=l_init, start=start, end=end, name="init")
def download(start, end):
exec_cmd(li_cmd=l_download, start=start, end=end, name="download")
def install(start, end):
exec_cmd(li_cmd=l_install, start=start, end=end, name="install")
def get_arg()->[]:
li = [None, None]
if len(sys.argv)>=3 and sys.argv[2] is not None:
arr = sys.argv[2].split(':')
try:
li[0] = int(arr[0])
li[1] = int(arr[1])
except Exception as e:
pass
return li
if __name__ == "__main__":
if len(sys.argv) <=1:
print("Usage: start.py init/install/download/print [start:end]")
sys.exit(-1)
arg = get_arg()
if sys.argv[1] == "init":
init(arg[0], arg[1])
if sys.argv[1] == "install":
install(arg[0], arg[1])
if sys.argv[1] == "download": # 包前不包后
download(arg[0], arg[1])
if sys.argv[1] == "test":
print(get_list(l_install, arg[0], arg[1]))
print(len(get_list(l_install, arg[0], arg[1])))
if sys.argv[1] == "print":
flash_print("init列表命令:")
for i, k in enumerate(l_init):
print("init[{}]: {}".format(i, k))
flash_print("download列表命令:")
for i, k in enumerate(l_download):
print("download[{}]: {}".format(i, k))
flash_print("install列表命令:")
for i, k in enumerate(l_install):
print("install[{}]: {}".format(i, k))