import os
from datetime import datetime
from argparse import ArgumentParser


def embed_text_files(outputpath, prefix, files):
    output = open(outputpath, "w")
    output.write("/*********************************************************************\n")
    output.write("*\n")
    output.write("*\tfile: %s\n" % os.path.basename(outputpath))
    output.write("*\tnote: string literals auto-generated by build_runtime.py\n")
    output.write("*\tdate: %s\n" % datetime.now().strftime("%d/%m%Y"))
    output.write("*\n")
    output.write("**********************************************************************/\n")

    outSymbol = (os.path.splitext(os.path.basename(outputpath))[0]).upper()

    output.write("#ifndef __%s_H__\n" % outSymbol)
    output.write("#define __%s_H__\n" % outSymbol)
    output.write("\n\n")

    for fileName in files:
        f = open(fileName, "r")
        lines = f.read().splitlines()

        output.write("//NOTE: string imported from %s\n" % fileName)

        stringName = os.path.splitext(os.path.basename(fileName))[0]
        output.write(f"const char* {prefix}{stringName} = ")

        for line in lines:
            output.write("\n\"%s\\n\"" % line)

        output.write(";\n\n")
        f.close()

    output.write("#endif // __%s_H__\n" % outSymbol)
    output.close()

if __name__ == "__main__":
	parser = ArgumentParser()
	parser.add_argument("inputFiles", nargs="+")
	parser.add_argument("-o", "--output")
	parser.add_argument("-p", "--prefix")

	args = parser.parse_args()

	embed_text_files(args.output, args.prefix, args.inputFiles)
