import json
import zlib
from pathlib import Path

metadata_path = "./metadata.json"

def calcular_crc32(path_arquivo):
    prev = 0
    with open(path_arquivo, "rb") as f:
        for bloco in iter(lambda: f.read(4096), b""):
            prev = zlib.crc32(bloco, prev)
    return format(prev & 0xFFFFFFFF, '08x')

firmwares = [
    {
        "file": "base.bin",
        "min_hw_version": "1.0",
        "checksum": "",
        "id_projeto": "0001"
    },
    # {
    #     "version": "1.0.2",
    #     "file": "v1.0.2.bin",
    #     "min_hw_version": "1.0",
    #     "checksum": ""
    # },
    # {
    #     "version": "1.0.6",
    #     "file": "v1.0.6.bin",
    #     "checksum": "",
    #     "id_projeto": "0002"
    # }
]

# Preenche os checksums usando CRC32
for fw in firmwares:
    caminho_bin = Path(fw["id_projeto"]) / fw["file"]
    if caminho_bin.exists():
        fw["checksum"] = calcular_crc32(caminho_bin)
    else:
        print(f"⚠️ Arquivo {fw['file']} não encontrado! Ignorando checksum.")

# Salva o metadata.json
with open(metadata_path, "w") as f:
    json.dump(firmwares, f, indent=4)

print(f"✅ 'metadata.json' gerado com CRC32 em: {metadata_path.resolve()}")
