fix exceptions - writeout errors instead of throwing tracebacks
This commit is contained in:
parent
f379752794
commit
300bf5801d
24
trezorctl
24
trezorctl
|
@ -6,9 +6,12 @@ import argparse
|
||||||
import json
|
import json
|
||||||
import base64
|
import base64
|
||||||
import tempfile
|
import tempfile
|
||||||
|
from trezorlib import types_pb2 as types
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
from trezorlib.client import TrezorClient, TrezorClientDebug
|
import sys
|
||||||
|
|
||||||
|
from trezorlib.client import TrezorClient, TrezorClientDebug, CallException
|
||||||
|
|
||||||
ether_units = {
|
ether_units = {
|
||||||
"wei": 1,
|
"wei": 1,
|
||||||
|
@ -70,7 +73,7 @@ def get_transport(transport_string, path, **kwargs):
|
||||||
if path == '' or path in d:
|
if path == '' or path in d:
|
||||||
return HidTransport(d, **kwargs)
|
return HidTransport(d, **kwargs)
|
||||||
|
|
||||||
raise Exception("Device not found")
|
raise CallException(types.Failure_Other, "Device not found")
|
||||||
|
|
||||||
if transport_string == 'udp':
|
if transport_string == 'udp':
|
||||||
from trezorlib.transport_udp import UdpTransport
|
from trezorlib.transport_udp import UdpTransport
|
||||||
|
@ -90,7 +93,7 @@ def get_transport(transport_string, path, **kwargs):
|
||||||
if path == '' or d['path'] == binascii.hexlify(path):
|
if path == '' or d['path'] == binascii.hexlify(path):
|
||||||
return BridgeTransport(d, **kwargs)
|
return BridgeTransport(d, **kwargs)
|
||||||
|
|
||||||
raise Exception("Device not found")
|
raise CallException(types.Failure_Other, "Device not found")
|
||||||
|
|
||||||
raise NotImplementedError("Unknown transport")
|
raise NotImplementedError("Unknown transport")
|
||||||
|
|
||||||
|
@ -124,7 +127,7 @@ class Commands(object):
|
||||||
if ' ' in value:
|
if ' ' in value:
|
||||||
value, unit = value.split(' ', 1)
|
value, unit = value.split(' ', 1)
|
||||||
if unit.lower() not in ether_units:
|
if unit.lower() not in ether_units:
|
||||||
raise Exception("Unrecognized ether unit %r", unit)
|
raise CallException(types.Failure_Other, "Unrecognized ether unit %r" % unit)
|
||||||
value = int(value) * ether_units[unit.lower()]
|
value = int(value) * ether_units[unit.lower()]
|
||||||
else:
|
else:
|
||||||
value = int(value)
|
value = int(value)
|
||||||
|
@ -196,7 +199,7 @@ class Commands(object):
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
im = Image.open(args.filename)
|
im = Image.open(args.filename)
|
||||||
if im.size != (128, 64):
|
if im.size != (128, 64):
|
||||||
raise Exception('Wrong size of the image')
|
raise CallException(types.Failure_Other, 'Wrong size of the image')
|
||||||
im = im.convert('1')
|
im = im.convert('1')
|
||||||
pix = im.load()
|
pix = im.load()
|
||||||
img = ''
|
img = ''
|
||||||
|
@ -223,7 +226,7 @@ class Commands(object):
|
||||||
|
|
||||||
def load_device(self, args):
|
def load_device(self, args):
|
||||||
if not args.mnemonic and not args.xprv:
|
if not args.mnemonic and not args.xprv:
|
||||||
raise Exception("Please provide mnemonic or xprv")
|
raise CallException(types.Failure_Other, "Please provide mnemonic or xprv")
|
||||||
|
|
||||||
if args.mnemonic:
|
if args.mnemonic:
|
||||||
mnemonic = ' '.join(args.mnemonic)
|
mnemonic = ' '.join(args.mnemonic)
|
||||||
|
@ -313,7 +316,7 @@ class Commands(object):
|
||||||
if fp[:8] == b'54525a52':
|
if fp[:8] == b'54525a52':
|
||||||
fp = binascii.unhexlify(fp)
|
fp = binascii.unhexlify(fp)
|
||||||
if fp[:4] != b'TRZR':
|
if fp[:4] != b'TRZR':
|
||||||
raise Exception("TREZOR firmware header expected")
|
raise CallException(types.Failure_FirmwareError, "TREZOR firmware header expected")
|
||||||
|
|
||||||
print("Please confirm action on device...")
|
print("Please confirm action on device...")
|
||||||
|
|
||||||
|
@ -534,6 +537,8 @@ def qt_pin_func(input_text, message=None):
|
||||||
def main():
|
def main():
|
||||||
args = parse_args(Commands)
|
args = parse_args(Commands)
|
||||||
|
|
||||||
|
try:
|
||||||
|
|
||||||
if args.cmd == 'list':
|
if args.cmd == 'list':
|
||||||
devices = list_usb()
|
devices = list_usb()
|
||||||
if args.json:
|
if args.json:
|
||||||
|
@ -560,6 +565,11 @@ def main():
|
||||||
print(json.dumps(res, sort_keys=True, indent=4))
|
print(json.dumps(res, sort_keys=True, indent=4))
|
||||||
else:
|
else:
|
||||||
print(res)
|
print(res)
|
||||||
|
except CallException as e:
|
||||||
|
status, message = e.args
|
||||||
|
sys.stderr.write('failure: {message}\n'.format(message=message))
|
||||||
|
exit(status)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in New Issue