-
Notifications
You must be signed in to change notification settings - Fork 9
/
main.py
executable file
·72 lines (57 loc) · 1.94 KB
/
main.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
import POS
import LineDisplay
import sys
import subprocess
import multiprocessing
import lib
import pos
import display
import server
import functools
def kill_server(port=None):
"""kill program connected to port"""
if port is None:
port = 8080
port = int(port)
try:
sub = subprocess.check_output(f"lsof -i:{port}", shell=True, stderr=subprocess.STDOUT)
output = sub.decode().split("\n")
lines = list()
ids = set()
for line in output:
if "python" in line:
lines.append(line)
for line in lines:
ids.add(line.split()[1])
except:
ids = None
finally:
if ids is not None and ids != {}:
[subprocess.call(f"kill {ppid}", shell=True) for ppid in ids]
print("done")
else:
print(f"{port} is clear.")
def main():
pos_process = multiprocessing.Process(target=pos.main, args=(POS.POSProtocol,))
server_process = multiprocessing.Process(target=server.main)
target0 = functools.partial(display.main, LineDisplay.CookLineProtocol, ncol=3, geometry="1920x1080")
display0_process = multiprocessing.Process(target=target0)
target1_protocol = functools.partial(LineDisplay.DrinkLineProtocol, exclude=["Bottled"])
target1 = functools.partial(display.main, target1_protocol, ncol=2, geometry="1440x900")
display1_process = multiprocessing.Process(target=target1)
try:
arg = sys.argv[1]
if arg == "kill":
return kill_server(lib.CONFIGDATA["port"])
else:
{"pos":pos_process,
"server": server_process,
"display0" : display0_process,
"display1": display1_process}.get(sys.argv[1]).start()
except IndexError:
server_process.start()
pos_process.start()
display0_process.start()
display1_process.start()
if __name__ == "__main__":
main()