164 lines
3.7 KiB
Python
164 lines
3.7 KiB
Python
import sys
|
|
|
|
# manually generated list
|
|
# colors=[
|
|
# "#ff0000",
|
|
# "#00ff00",
|
|
# "#0000ff",
|
|
# "#ffff00",
|
|
# "#ff00ff",
|
|
# "#00ffff",
|
|
# "#ff9900",
|
|
# "#ff0099",
|
|
# "#00ff99",
|
|
# "#99ff00",
|
|
# "#9900ff",
|
|
# "#0099ff",
|
|
# "#ff9933",
|
|
# "#ff3399",
|
|
# "#99ff33",
|
|
# "#9933ff",
|
|
# "#33ff99",
|
|
# "#3399ff"
|
|
# ]
|
|
|
|
# from: http://en.wikipedia.org/wiki/HSL_and_HSV
|
|
colors = [
|
|
#"#FFFFFF",
|
|
"#808080",
|
|
"#000000",
|
|
"#FF0000",
|
|
"#BFBF00",
|
|
"#008000",
|
|
"#80FFFF",
|
|
"#8080FF",
|
|
"#BF40BF",
|
|
"#A0A424",
|
|
"#411BEA",
|
|
"#1EAC41",
|
|
"#F0C80E",
|
|
"#B430E5",
|
|
"#ED7651",
|
|
#"#FEF888",
|
|
"#19CB97",
|
|
"#362698",
|
|
"#7E7EB8",
|
|
]
|
|
|
|
# taken from http://www.mcfedries.com/books/cightml/x11color.htm
|
|
# colors=[
|
|
# "#DC143C", # Crimson
|
|
# "#228B22", # ForestGreen
|
|
# "#FF00FF", # Magenta
|
|
# "#808000", # Olive
|
|
# "#8B008B", # DarkMagenta
|
|
# "#7B68EE", # MediumSlateBlue
|
|
# "#DAA520", # Goldenrod
|
|
# "#191970", # MidnightBlue
|
|
# "#FFA500", # Orange
|
|
# "#00CED1", # DarkTurquoise
|
|
# "#8B4513", # SaddleBrown
|
|
# "#8B0000", # DarkRed
|
|
# "#808080", # Gray
|
|
# ]
|
|
|
|
# colors = [
|
|
# "aquamarine4",
|
|
# "azure4",
|
|
# "bisque3",
|
|
# "blue1",
|
|
# "brown",
|
|
# "burlywood",
|
|
# "cadetblue",
|
|
# "chartreuse",
|
|
# "chocolate",
|
|
# "coral",
|
|
# "cornflowerblue",
|
|
# "cornsilk4",
|
|
# "cyan3",
|
|
# "darkgoldenrod3",
|
|
# "darkolivegreen1",
|
|
# "darkorange1",
|
|
# "darkorchid1",
|
|
# "darkseagreen",
|
|
# "darkslateblue",
|
|
# "darkslategray4",
|
|
# "deeppink1",
|
|
# "deepskyblue1",
|
|
# "dimgrey",
|
|
# "dodgerblue4",
|
|
# "firebrick4",
|
|
# "gold"
|
|
# ]
|
|
|
|
#colors = ["blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen"]
|
|
|
|
dep_type = sys.argv[1]
|
|
|
|
# open file
|
|
f = open("dep.txt")
|
|
|
|
entries_1 = dict()
|
|
entries_2 = dict()
|
|
|
|
# read first list until "---"
|
|
i = 0;
|
|
for line in f:
|
|
line = line.strip()
|
|
if line.startswith("---"):
|
|
break
|
|
entries_1[line] = [line+"_1", colors[i % len(colors)]]
|
|
entries_2[line] = [line+"_2", colors[i % len(colors)]]
|
|
i += 1
|
|
|
|
# create 2d dict from list
|
|
deps = dict()
|
|
for entry in entries_1.keys():
|
|
deps[entry] = dict()
|
|
e_dep = deps[entry]
|
|
for entry2 in entries_1.keys():
|
|
e_dep[entry2] = dict()
|
|
e_dep[entry2]["base"] = 0
|
|
e_dep[entry2]["type"] = "x"
|
|
|
|
# read rest of file
|
|
for line in f:
|
|
line = line.strip()
|
|
parts = line.split(None) # split on whitespace
|
|
if line.startswith("#"):
|
|
continue
|
|
if len(parts) >= 3:
|
|
deps[parts[0]][parts[1]]["base"] = parts[2]
|
|
if parts[2] != 0 and len(parts) >= 4:
|
|
deps[parts[0]][parts[1]]["type"] = parts[3]
|
|
|
|
f.close()
|
|
|
|
# write dot graph header
|
|
print "# process with: dot -Tpdf mydep2.dot -O -Gratio=0.5"
|
|
print "digraph dep {"
|
|
print "\tcolorscheme=x11;"
|
|
|
|
# write actual dot content
|
|
for dep1 in deps.keys():
|
|
for dep2 in deps[dep1].keys():
|
|
if deps[dep1][dep2]["base"] == "0":
|
|
# no dependency
|
|
continue
|
|
if dep_type != "a" and deps[dep1][dep2]["type"][0] != dep_type:
|
|
# HACK: [0] to deal with fb type
|
|
# we only want desired dependency
|
|
continue
|
|
if deps[dep1][dep2]["base"] == "1":
|
|
print entries_1[dep1][0], " -> ", entries_2[dep2][0], " [color=\"", entries_1[dep1][1], "\"][style=\"bold\"];"
|
|
elif deps[dep1][dep2]["base"] == "2":
|
|
print entries_1[dep1][0], " -> ", entries_2[dep2][0], " [color=\"", entries_1[dep1][1], "\"][style=\"dashed\"];"
|
|
else:
|
|
# this dependency hasn't been processed yet
|
|
continue
|
|
# print entries_1[dep1], " -> ", entries_2[dep2], " [color=\"yellow\"];"
|
|
|
|
# write dot graph footer
|
|
print "}"
|
|
|