diff --git a/scripts/add-utxo.py b/scripts/add-utxo.py index 710a9eb..7d52791 100755 --- a/scripts/add-utxo.py +++ b/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) diff --git a/scripts/scripts_support.py b/scripts/scripts_support.py index 152eccd..edb3f53 100644 --- a/scripts/scripts_support.py +++ b/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 diff --git a/scripts/wallet-tool.py b/scripts/wallet-tool.py index 969f0d5..10c2f3f 100755 --- a/scripts/wallet-tool.py +++ b/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)