Magnifica_S-Pro/tools/build_manifest.py

46 lines
1.1 KiB
Python

#!/usr/bin/env python3
"""Regenerate firmware/manifest.json SHA-256 entries."""
from pathlib import Path
import hashlib
import json
import sys
ROOT = Path(__file__).resolve().parents[1]
OUT = ROOT / "firmware" / "manifest.json"
FILES = [
("firmware/launcher.py", "/launcher.py"),
("firmware/app/__init__.py", "/app/__init__.py"),
("firmware/app/digital_probe.py", "/app/digital_probe.py"),
("firmware/app/main.py", "/app/main.py"),
]
def sha256(path):
h = hashlib.sha256()
with open(path, "rb") as f:
for chunk in iter(lambda: f.read(65536), b""):
h.update(chunk)
return h.hexdigest()
def main():
release = sys.argv[1] if len(sys.argv) > 1 else "dev"
entries = []
for source, target in FILES:
entries.append({
"source": source,
"target": target,
"sha256": sha256(ROOT / source),
})
OUT.write_text(json.dumps({
"schema": 1,
"release": release,
"files": entries,
}, indent=2) + "\n", encoding="utf-8")
print("wrote", OUT)
if __name__ == "__main__":
main()