diff --git a/src/dexorder/bin/examine.py b/src/dexorder/bin/examine.py index d86b4d2..e9cba8f 100644 --- a/src/dexorder/bin/examine.py +++ b/src/dexorder/bin/examine.py @@ -11,17 +11,29 @@ from dexorder.blockstate.fork import current_fork from dexorder.contract.dexorder import VaultContract from dexorder.order.orderstate import Order from dexorder.tokens import adjust_decimals +from dexorder.util import json from dexorder.vault_blockdata import vault_balances, pretty_balances from dexorder.bin.executable import execute log = logging.getLogger(__name__) +async def dump_orders(orders, args): + if args.json: + print(json.dumps([order.status.dump() for order in orders])) + else: + first = True + for order in orders: + if first: + first = False + else: + print() + print(await order.pprint()) def command_vault_argparse(subparsers): parser = subparsers.add_parser('vault', help='show the vault\'s balances and orders') parser.add_argument('address', help='address of the vault') parser.add_argument('--all', help='show all orders including closed ones', action='store_true') - # parser.add_argument('--json', help='output in JSON format', action='store_true') + parser.add_argument('--json', help='output in JSON format', action='store_true') async def command_vault(args): balances = vault_balances.get(args.address, {}) @@ -30,6 +42,7 @@ async def command_vault(args): print(pretty_balances({k: (await adjust_decimals(k, v)) for k, v in balances.items()})) print(f'Orders:') i = 0 + orders = [] while True: key = OrderKey(args.address, i) try: @@ -37,16 +50,19 @@ async def command_vault(args): except KeyError: break if args.all or order.is_open: - print(await order.pprint()) + orders.append(order) i += 1 + await dump_orders(orders, args) + + +def command_open_argparse(subparsers): + parser = subparsers.add_parser('open', help='show all open orders') + parser.add_argument('--json', help='output in JSON format', action='store_true') + + +async def command_open(args): + await dump_orders([Order.of(key) for key in Order.open_orders], args) - # for key in Order.open_orders: - # order = Order.of(key) - # if args.json: - # print(json.dumps(order.status.dump())) - # else: - # print() - # print(order) async def main(args: list): parser = argparse.ArgumentParser()