added checksum to auto-generated files

This commit is contained in:
2024-01-10 19:09:18 +01:00
parent 925167ec3c
commit 58c6bc820a
10 changed files with 241 additions and 150 deletions

View File

@@ -3,6 +3,8 @@ import time
from jinja2 import Environment, FileSystemLoader
import re
import filechecksum as fcs
# Pfad zur Eingabedatei und Ausgabedatei
input_file = "include/config.h"
output_sourcefile = "src/struct2json.cpp"
@@ -67,6 +69,7 @@ def struct2json():
variable_types = get_types(content, variable_names)
structs = extract_struct_fields(content, variable_types)
checksum = fcs.calculate_checksum(structs)
env = Environment(loader=FileSystemLoader('codegen/templates', encoding='utf-8'))
# Lade das Jinja2-Template aus der Datei
@@ -78,16 +81,28 @@ def struct2json():
'timestamp_unix': timestamp,
'timestamp' : time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp)),
'date' : time.strftime('%d.%m.%Y', time.localtime(timestamp)),
'structs': structs, # Übergebe die foo-Liste direkt
'structs': structs,
'checksum': checksum
}
# Rendere das Template mit den Werten und erhalte den Source-Text
source_text = template_c.render(context)
header_text = template_h.render(context)
# Überprüfe, ob die Checksummen übereinstimmen
if fcs.read_and_compare_checksum(output_sourcefile, checksum):
print("Keine Änderungen in der Source-Datei erforderlich.")
else:
# Rendere das Template mit den Werten und erhalte den Source-Text
source_text = template_c.render(context)
# Schreibe den generierten Source-Text in die Source-Datei
with open(output_sourcefile, "w", encoding='utf-8') as f:
f.write(source_text)
print(f"Source-Datei wurde erstellt: {output_sourcefile}")
# Schreibe den generierten Source-Text in die Source-Dateien
with open(output_sourcefile, "w", encoding='utf-8') as f:
f.write(source_text)
with open(output_headerfile, "w", encoding='utf-8') as f:
f.write(header_text)
print(f"Source-Dateien wurde erstellt: {output_sourcefile}, {output_headerfile}")
# Überprüfe, ob die Checksummen übereinstimmen
if fcs.read_and_compare_checksum(output_headerfile, checksum):
print("Keine Änderungen in der Header-Datei erforderlich.")
else:
# Rendere das Template mit den Werten und erhalte den Header-Text
header_text = template_h.render(context)
# Schreibe den generierten Header-Text in die Header-Datei
with open(output_headerfile, "w", encoding='utf-8') as f:
f.write(header_text)
print(f"Header-Datei wurde erstellt: {output_headerfile}")