46 lines
1.1 KiB
Python
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()
|