embed_json.py 908 B

123456789101112131415161718192021222324252627282930
  1. import sys
  2. import os
  3. import json
  4. if len(sys.argv) != 3:
  5. print(f"Usage: {sys.argv[0]} <input.json> <output.c>")
  6. sys.exit(1)
  7. input_path = sys.argv[1]
  8. output_path = sys.argv[2]
  9. with open(input_path, 'r', encoding='utf-8') as f:
  10. data = f.read()
  11. # Optionally, minify JSON to save space
  12. try:
  13. minified = json.dumps(json.loads(data), separators=(",", ":"))
  14. except Exception:
  15. minified = data
  16. c_array = ','.join(str(ord(c)) for c in minified)
  17. header = "#include \"diagnostic_schema_embed.h\"\n\n"
  18. array_decl = f"const char ZT_DIAGNOSTIC_SCHEMA_JSON[] = \"{minified.replace('\\', '\\\\').replace('"', '\\"').replace(chr(10), '\\n').replace(chr(13), '')}\";\n"
  19. len_decl = f"const unsigned int ZT_DIAGNOSTIC_SCHEMA_JSON_LEN = sizeof(ZT_DIAGNOSTIC_SCHEMA_JSON) - 1;\n"
  20. with open(output_path, 'w', encoding='utf-8') as out:
  21. out.write(header)
  22. out.write(array_decl)
  23. out.write(len_decl)