mirror of https://github.com/CIRCL/AIL-framework
63 lines
2.5 KiB
Python
Executable File
63 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python2
|
|
# -*-coding:UTF-8 -*
|
|
|
|
content = ""
|
|
modules = {}
|
|
all_modules = []
|
|
curr_module = ""
|
|
streamingPub = {}
|
|
streamingSub = {}
|
|
|
|
with open('../bin/packages/modules.cfg', 'r') as f:
|
|
for line in f:
|
|
if line[0] != '#':
|
|
if line[0] == '[':
|
|
curr_name = line.replace('[','').replace(']','').replace('\n', '').replace(' ', '')
|
|
all_modules.append(curr_name)
|
|
modules[curr_name] = {'sub': [], 'pub': []}
|
|
curr_module = curr_name
|
|
elif curr_module != "": # searching for sub or pub
|
|
if line.startswith("subscribe"):
|
|
curr_subscribers = [w for w in line.replace('\n', '').replace(' ', '').split('=')[1].split(',')]
|
|
modules[curr_module]['sub'] = curr_subscribers
|
|
for sub in curr_subscribers:
|
|
streamingSub[sub] = curr_module
|
|
|
|
elif line.startswith("publish"):
|
|
curr_publishers = [w for w in line.replace('\n', '').replace(' ', '').split('=')[1].split(',')]
|
|
modules[curr_module]['pub'] = curr_publishers
|
|
for pub in curr_publishers:
|
|
streamingPub[pub] = curr_module
|
|
else:
|
|
continue
|
|
|
|
output_set_graph = set()
|
|
|
|
for module in modules.keys():
|
|
for stream_in in modules[module]['sub']:
|
|
if stream_in not in streamingPub.keys():
|
|
output_set_graph.add("\"" + stream_in + "\" [color=darkorange1] ;\n")
|
|
output_set_graph.add("\"" + stream_in + "\"" + "->" + module + ";\n")
|
|
else:
|
|
output_set_graph.add("\"" + streamingPub[stream_in] + "\"" + "->" + module + ";\n")
|
|
|
|
for stream_out in modules[module]['pub']:
|
|
if stream_out not in streamingSub.keys():
|
|
output_set_graph.add("\"" + stream_out + "\" [color=darkorange1] ;\n")
|
|
output_set_graph.add("\"" + stream_out + "\"" + "->" + module + ";\n")
|
|
else:
|
|
output_set_graph.add("\"" + module + "\"" + "->" + streamingSub[stream_out] + ";\n")
|
|
|
|
|
|
output_text_graph = ""
|
|
output_text_graph += "digraph unix {\n"\
|
|
"graph [pad=\"0.5\"];\n"\
|
|
"size=\"25,25\";\n"\
|
|
"node [color=lightblue2, style=filled];\n"
|
|
|
|
for elem in output_set_graph:
|
|
output_text_graph += elem
|
|
|
|
output_text_graph += "}"
|
|
print output_text_graph
|