#!/usr/bin/env python3

from sys import argv, exit

if len(argv) != 4:
    print("Usage: %s [parse file] [input DOT file] [output DOT file]" % argv[0])
    exit(1)

critical = []
nodecolor = []

with open(argv[1], 'r') as myfile:
    text = myfile.read()
splits = text.split("ID:")
states = len(splits) -1

for i in range(states):
    if "is_critical=true" in splits[i]:
            critical.append("label="+str(i-1))

with open(argv[2], 'r') as inDOT:
        DOTtext = inDOT.read()
dotsplits = DOTtext.split("\n")

for x in range(len(dotsplits)):
    if (any(ele in (dotsplits[x]) for ele in critical)):
        nodestr=dotsplits[x].rsplit(' ')[0]
        node=nodestr.split("->")[1]        
        if node not in nodecolor:
            nodecolor.append(node)
        
for x in range(len(dotsplits)):
    if ("label" not in dotsplits[x]):
        if (any(ele in (dotsplits[x]) for ele in nodecolor)):
            tmpstr=dotsplits[x].split(";")[0]
            newstr=tmpstr
            finalstr=newstr.replace(tmpstr, tmpstr+"[fillcolor = \"#FF2C2C\", style=filled, fontname=\"times-bold\"];")
            (dotsplits[x])=finalstr

sep="\n"
with open(argv[3], 'w') as outDOT:
       outDOT.write(sep.join(dotsplits))


