import sys
import re
import json

in_filename = sys.argv[1]
out_filename = sys.argv[2]
vars = json.loads(sys.argv[3])

with open(in_filename, "r") as f:
    content = f.read()

content = content.replace("\\\"", "\"")

varname_pattern = re.compile("[A-Za-z0-9_]+")
for name, value in vars.items():
    if varname_pattern.fullmatch(name) is None:
        print("Name \"{}\" is not a valid variable name.".format(name))
        continue

    pattern = "\\$\\$({}|\\{{{}\\}})".format(name, name)
    print(pattern)
    content = re.sub(pattern, str(value), content)

with open(out_filename, "w") as f:
    f.write(content)