1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-16 11:28:14 +00:00

Allow firmware update by version or latest from releases.json

This commit is contained in:
Chris Rico 2015-09-04 13:41:54 -05:00 committed by Pavol Rusnak
parent a20f976721
commit 6475f98b1e
No known key found for this signature in database
GPG Key ID: 91F3B339B9A02A3D

View File

@ -203,9 +203,6 @@ class Commands(object):
return ret return ret
def firmware_update(self, args): def firmware_update(self, args):
if not args.file and not args.url:
raise Exception("Must provide firmware filename or URL")
if args.file: if args.file:
fp = open(args.file, 'r') fp = open(args.file, 'r')
elif args.url: elif args.url:
@ -213,6 +210,19 @@ class Commands(object):
resp = urllib.urlretrieve(args.url) resp = urllib.urlretrieve(args.url)
fp = open(resp[0], 'r') fp = open(resp[0], 'r')
urllib.urlcleanup() # We still keep file pointer open urllib.urlcleanup() # We still keep file pointer open
else:
resp = urllib.urlopen("https://mytrezor.com/data/firmware/releases.json")
releases = json.load(resp)
version = lambda r: r['version']
version_string = lambda r: ".".join(map(str, version(r)))
if args.version:
release = next((r for r in releases if version_string(r) == args.version))
else:
release = max(releases, key=version)
print "No file, url, or version given. Fetching latest version: %s" % version_string(release)
print "Firmware fingerprint: %s" % release['fingerprint']
args.url = release['url']
return self.firmware_update(args)
if fp.read(8) == '54525a52': if fp.read(8) == '54525a52':
print "Converting firmware to binary" print "Converting firmware to binary"
@ -358,6 +368,7 @@ class Commands(object):
firmware_update.arguments = ( firmware_update.arguments = (
(('-f', '--file'), {'type': str}), (('-f', '--file'), {'type': str}),
(('-u', '--url'), {'type': str}), (('-u', '--url'), {'type': str}),
(('-n', '--version'), {'type': str}),
) )
def list_usb(): def list_usb():