mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-21 13:58:08 +00:00
58 lines
1.4 KiB
Python
Executable File
58 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import os
|
|
import requests
|
|
|
|
RELEASES_URL = "https://data.trezor.io/firmware/{}/releases.json"
|
|
MODELS = ("1", "T")
|
|
|
|
FILENAME = os.path.join(os.path.dirname(__file__), "..", "trezorlib", "__init__.py")
|
|
START_LINE = "MINIMUM_FIRMWARE_VERSION = {\n"
|
|
END_LINE = "}\n"
|
|
|
|
|
|
def version_str(vtuple):
|
|
return ".".join(map(str, vtuple))
|
|
|
|
|
|
def fetch_releases(model):
|
|
version = model
|
|
if model == "T":
|
|
version = "2"
|
|
|
|
url = RELEASES_URL.format(version)
|
|
releases = requests.get(url).json()
|
|
releases.sort(key=lambda r: r["version"], reverse=True)
|
|
return releases
|
|
|
|
|
|
def find_latest_required(model):
|
|
releases = fetch_releases(model)
|
|
return next(r for r in releases if r["required"])
|
|
|
|
|
|
with open(FILENAME, "r+") as f:
|
|
output = []
|
|
line = None
|
|
# copy up to & incl START_LINE
|
|
while line != START_LINE:
|
|
line = next(f)
|
|
output.append(line)
|
|
# throw away until END_LINE
|
|
while line != END_LINE:
|
|
line = next(f)
|
|
# append models
|
|
for model in MODELS:
|
|
rel = find_latest_required(model)
|
|
version_tuple = tuple(rel["version"])
|
|
line = f' "{model}": {version_tuple!r},\n'
|
|
output.append(line)
|
|
output.append(END_LINE)
|
|
# finish reading file
|
|
for line in f:
|
|
output.append(line)
|
|
|
|
f.seek(0)
|
|
f.truncate(0)
|
|
for line in output:
|
|
f.write(line)
|