Browse Source

scripts: add finalize_main_task, use in wallet-tool.py, add-utxo.py

add_frost
zebra-lucky 2 weeks ago
parent
commit
ac745f7d0e
  1. 6
      scripts/add-utxo.py
  2. 14
      scripts/scripts_support.py
  3. 12
      scripts/wallet-tool.py

6
scripts/add-utxo.py

@ -14,6 +14,7 @@ from optparse import OptionParser
import jmclient # install asyncioreactor
from twisted.internet import reactor
from scripts_support import wrap_main, finalize_main_task
from jmclient import load_program_config, jm_single,\
open_wallet, WalletService, add_external_commitments, update_commitments,\
@ -250,6 +251,8 @@ async def main():
assert len(utxo_data)
add_ext_commitments(utxo_data)
@wrap_main
async def _main():
await main()
jmprint('done', "success")
@ -257,5 +260,6 @@ async def _main():
if __name__ == "__main__":
asyncio_loop = asyncio.get_event_loop()
asyncio_loop.create_task(_main())
main_task = asyncio_loop.create_task(_main())
reactor.run()
finalize_main_task(main_task)

14
scripts/scripts_support.py

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import asyncio
import sys
from functools import wraps
import jmclient # install asyncioreactor
@ -13,7 +14,6 @@ def wrap_main(func):
@wraps(func)
async def func_wrapper(*args, **kwargs):
try:
return await func(*args, **kwargs)
except SystemExit as e:
@ -28,3 +28,15 @@ def wrap_main(func):
jmprint(f'Errors during reactor cleaenup/stop: {e}', 'debug')
return func_wrapper
def finalize_main_task(main_task):
if main_task.done():
try:
exit_status = main_task.result()
if exit_status:
sys.exit(exit_status)
except asyncio.CancelledError:
pass
except Exception:
raise

12
scripts/wallet-tool.py

@ -5,7 +5,7 @@ import sys
import jmclient # install asyncioreactor
from twisted.internet import reactor
from scripts_support import wrap_main
from scripts_support import wrap_main, finalize_main_task
from jmbase import jmprint
from jmclient import wallet_tool_main
@ -24,12 +24,4 @@ if __name__ == "__main__":
asyncio_loop = asyncio.get_event_loop()
main_task = asyncio_loop.create_task(_main())
reactor.run()
if main_task.done():
try:
exit_status = main_task.result()
if exit_status:
sys.exit(exit_status)
except asyncio.CancelledError:
pass
except Exception:
raise
finalize_main_task(main_task)

Loading…
Cancel
Save