#!/usr/bin/python3 import fileinput import os import sys def escape_quotes(string): return string.replace("\"", '\\"') def escape_newlines(string): return string.replace("\n", "\\n") def quote(string): return "\"" + string + "\"" def main(): if len(sys.argv) < 3: print("Usage: {} [text files...] [C files...]".format(sys.argv[0])) return 1 files = sys.argv[1:] assert(len(files) % 2 == 0) N = int(len(files) / 2) text_files = files[:N] c_files = files[N:] for i in range(len(text_files)): text_file = text_files[i] c_file = c_files[i] h_file = c_file.replace(".c", ".h") variable_name = os.path.basename(text_file).replace(".", "_") os.makedirs(os.path.join(".", os.path.dirname(c_file)), exist_ok=True) # Create the C file. with open(c_file, 'w') as out_file: out_file.write("const char {}[] =\n".format(variable_name)) pad = " " with open(text_file, 'r') as in_file: for line in in_file.readlines(): line = escape_quotes(line) line = escape_newlines(line) line = quote(line) line = pad + line + "\n" out_file.write(line) out_file.write(pad + "\"\";") # Create the header file. with open(h_file, 'w') as out_file: out_file.write("#pragma once\n") out_file.write("\n") out_file.write("extern const char {}[];".format(variable_name)) return 0 if __name__ == '__main__': sys.exit(main())