-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmake.py
More file actions
95 lines (75 loc) · 2.86 KB
/
Copy pathmake.py
File metadata and controls
95 lines (75 loc) · 2.86 KB
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
from sys import argv
def get_src(filename: str) -> list[str]:
with open(filename, 'r') as f:
return f.readlines()
def remove_imports(src: list[str]) -> list[str]:
last_import = 0
for i in range(len(src)):
line = src[i]
if 'import' in line:
last_import = i
if 'save_imports' in line:
last_import -= 1
break
return src[last_import+1:]
def get_beacon_src() -> list[str]:
beacon_src = get_src('micropycelium/Beacon.py')
return remove_imports(beacon_src)
def get_gossip_src() -> list[str]:
gossip_src = get_src('micropycelium/Gossip.py')
return remove_imports(gossip_src)
def get_spanning_tree_src() -> list[str]:
spanning_tree_src = get_src('micropycelium/SpanningTree.py')
return remove_imports(spanning_tree_src)
def get_ping_src() -> list[str]:
ping_src = get_src('micropycelium/Ping.py')
return remove_imports(ping_src)
def get_debug_src() -> list[str]:
debug_src = get_src('micropycelium/DebugApp.py')
return remove_imports(debug_src)
def get_espnowintrfc_src() -> list[str]:
espnowintrfc_src = get_src('micropycelium/ESPNowInterface.py')
return remove_imports(espnowintrfc_src)
def main_mpnode(options: dict[str, list[str]]):
parts = []
mpnode_src = get_src('mpnode/mpnode.py')
parts.append(''.join(mpnode_src))
device = options.get('mpnode')[0]
device_src = get_src(f'devices/{device}/mpnode.py')
device_src = remove_imports(device_src)
parts.append(''.join(device_src))
print(''.join(parts))
def main(options: dict[str, list[str]]):
if options.get('mpnode'):
return main_mpnode(options)
parts = []
packager_src = get_src('micropycelium/Packager.py')
# turn on debug
if options.get('debug', True):
for i in range(len(packager_src)):
if packager_src[i][:5] == 'DEBUG':
packager_src[i] = packager_src[i].replace('False', 'True')
break
parts.append(''.join(packager_src))
exclude = [e.lower() for e in options.get('exclude', [])]
if 'beacon' not in exclude:
parts.append(''.join(get_beacon_src()))
if 'gossip' not in exclude:
parts.append(''.join(get_gossip_src()))
if 'spanningtree' not in exclude:
parts.append(''.join(get_spanning_tree_src()))
if 'ping' not in exclude:
parts.append(''.join(get_ping_src()))
if 'debug' not in exclude:
parts.append(''.join(get_debug_src()))
if 'espnow' not in exclude and 'espnowinterface' not in exclude:
parts.append(''.join(get_espnowintrfc_src()))
ainput_src = get_src('micropycelium/ainput.py')
parts.append(''.join(ainput_src))
print(''.join(parts))
if __name__ == '__main__':
options = {}
for i in range(1, len(argv), 2):
if len(argv) > i+1:
options[argv[i]] = argv[i+1].split(',')
main(options)