From abe92572c1ebf6274422817144471295d0e50554 Mon Sep 17 00:00:00 2001 From: zebra-lucky Date: Fri, 28 Nov 2025 06:23:04 +0200 Subject: [PATCH] mv scripts_support to jmclient, update snicker scripts --- scripts/add-utxo.py | 2 +- scripts/bond-calculator.py | 2 +- scripts/bumpfee.py | 2 +- scripts/genwallet.py | 2 +- scripts/receive-payjoin.py | 2 +- scripts/sendpayment.py | 2 +- scripts/sendtomany.py | 2 +- scripts/snicker/create-snicker-proposal.py | 5 ++++- scripts/snicker/receive-snicker.py | 6 ++++-- scripts/snicker/snicker-finder.py | 5 ++++- scripts/snicker/snicker-recovery.py | 5 ++++- scripts/snicker/snicker-seed-tx.py | 5 ++++- scripts/snicker/snicker-server.py | 7 ++++++- scripts/tumbler.py | 2 +- scripts/wallet-tool.py | 2 +- scripts/yg-privacyenhanced.py | 3 +-- scripts/yield-generator-basic.py | 2 +- {scripts => src/jmclient}/scripts_support.py | 1 - 18 files changed, 37 insertions(+), 20 deletions(-) rename {scripts => src/jmclient}/scripts_support.py (95%) diff --git a/scripts/add-utxo.py b/scripts/add-utxo.py index 7d52791..2f7b64c 100755 --- a/scripts/add-utxo.py +++ b/scripts/add-utxo.py @@ -14,7 +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.scripts_support import wrap_main, finalize_main_task from jmclient import load_program_config, jm_single,\ open_wallet, WalletService, add_external_commitments, update_commitments,\ diff --git a/scripts/bond-calculator.py b/scripts/bond-calculator.py index 69349cc..51ce375 100755 --- a/scripts/bond-calculator.py +++ b/scripts/bond-calculator.py @@ -9,7 +9,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.scripts_support import wrap_main, finalize_main_task from jmbase import EXIT_ARGERROR, jmprint, get_log, utxostr_to_utxo, EXIT_FAILURE from jmbitcoin import amount_to_sat, amount_to_str diff --git a/scripts/bumpfee.py b/scripts/bumpfee.py index dcbde12..ebfb44b 100755 --- a/scripts/bumpfee.py +++ b/scripts/bumpfee.py @@ -5,7 +5,7 @@ from decimal import Decimal import jmclient # install asyncioreactor from twisted.internet import reactor -from scripts_support import wrap_main, finalize_main_task +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import get_log, hextobin, bintohex from jmbase.support import EXIT_SUCCESS, EXIT_FAILURE, EXIT_ARGERROR, jmprint, cli_prompt_user_yesno diff --git a/scripts/genwallet.py b/scripts/genwallet.py index 832334d..b2bf996 100755 --- a/scripts/genwallet.py +++ b/scripts/genwallet.py @@ -9,7 +9,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.scripts_support import wrap_main, finalize_main_task from pathlib import Path from jmclient import ( diff --git a/scripts/receive-payjoin.py b/scripts/receive-payjoin.py index 0556eb6..23ca4ed 100755 --- a/scripts/receive-payjoin.py +++ b/scripts/receive-payjoin.py @@ -7,7 +7,7 @@ import sys import jmclient # install asyncioreactor from twisted.internet import reactor -from scripts_support import wrap_main, finalize_main_task +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import get_log, jmprint from jmclient import jm_single, load_program_config, \ diff --git a/scripts/sendpayment.py b/scripts/sendpayment.py index ccedd31..9d4dab3 100755 --- a/scripts/sendpayment.py +++ b/scripts/sendpayment.py @@ -13,7 +13,7 @@ import pprint import jmclient # install asyncioreactor from twisted.internet import reactor -from scripts_support import wrap_main, finalize_main_task +from jmclient.scripts_support import wrap_main, finalize_main_task from jmclient import Taker, load_program_config, get_schedule,\ JMClientProtocolFactory, start_reactor, validate_address, is_burn_destination, \ diff --git a/scripts/sendtomany.py b/scripts/sendtomany.py index 43d071e..fd9c780 100755 --- a/scripts/sendtomany.py +++ b/scripts/sendtomany.py @@ -11,7 +11,7 @@ import jmbitcoin as btc import jmclient # install asyncioreactor from twisted.internet import reactor -from scripts_support import wrap_main, finalize_main_task +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import (get_log, jmprint, bintohex, utxostr_to_utxo, IndentedHelpFormatterWithNL, cli_prompt_user_yesno) diff --git a/scripts/snicker/create-snicker-proposal.py b/scripts/snicker/create-snicker-proposal.py index 2585293..15ea4d0 100755 --- a/scripts/snicker/create-snicker-proposal.py +++ b/scripts/snicker/create-snicker-proposal.py @@ -27,6 +27,7 @@ from optparse import OptionParser import jmclient # install asyncioreactor from twisted.internet import reactor +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import bintohex, jmprint, hextobin, \ EXIT_ARGERROR, EXIT_FAILURE, EXIT_SUCCESS, get_pow @@ -231,6 +232,7 @@ class SNICKERPostingClient(object): return self.proposals_with_nonce +@wrap_main async def _main(): await main() jmprint('done', "success") @@ -238,5 +240,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/snicker/receive-snicker.py b/scripts/snicker/receive-snicker.py index 14e5523..9b0e2f1 100755 --- a/scripts/snicker/receive-snicker.py +++ b/scripts/snicker/receive-snicker.py @@ -6,6 +6,7 @@ import sys import jmclient # install asyncioreactor from twisted.internet import reactor +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import get_log, jmprint from jmclient import (jm_single, load_program_config, WalletService, @@ -92,13 +93,14 @@ Usage: %prog [options] wallet file [proposal] daemon=daemon) +@wrap_main async def _main(): await receive_snicker_main() jmprint('done') - reactor.stop() 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/snicker/snicker-finder.py b/scripts/snicker/snicker-finder.py index 1a68458..c890987 100755 --- a/scripts/snicker/snicker-finder.py +++ b/scripts/snicker/snicker-finder.py @@ -30,6 +30,7 @@ from optparse import OptionParser import jmclient # install asyncioreactor from twisted.internet import reactor +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import bintohex, EXIT_ARGERROR, jmprint import jmbitcoin as btc @@ -118,6 +119,7 @@ async def main(): log.info("Finished processing block: {}".format(b)) +@wrap_main async def _main(): await main() jmprint('done', "success") @@ -125,5 +127,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/snicker/snicker-recovery.py b/scripts/snicker/snicker-recovery.py index c6e7422..f8ea120 100755 --- a/scripts/snicker/snicker-recovery.py +++ b/scripts/snicker/snicker-recovery.py @@ -30,6 +30,7 @@ from optparse import OptionParser import jmclient # install asyncioreactor from twisted.internet import reactor +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import bintohex, EXIT_ARGERROR, jmprint import jmbitcoin as btc @@ -206,6 +207,7 @@ async def main(): return False +@wrap_main async def _main(): res = await main() if not res: @@ -216,5 +218,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/snicker/snicker-seed-tx.py b/scripts/snicker/snicker-seed-tx.py index 99cab6b..07cc423 100755 --- a/scripts/snicker/snicker-seed-tx.py +++ b/scripts/snicker/snicker-seed-tx.py @@ -26,6 +26,7 @@ from optparse import OptionParser import jmclient # install asyncioreactor from twisted.internet import reactor +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import bintohex, jmprint, EXIT_ARGERROR, EXIT_FAILURE import jmbitcoin as btc @@ -214,6 +215,7 @@ async def main(): bintohex(tx.GetTxid()[::-1])) +@wrap_main async def _main(): await main() jmprint('done', "success") @@ -221,5 +223,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/snicker/snicker-server.py b/scripts/snicker/snicker-server.py index 0a9492c..765b2c3 100755 --- a/scripts/snicker/snicker-server.py +++ b/scripts/snicker/snicker-server.py @@ -26,6 +26,7 @@ import asyncio import jmclient # install asyncioreactor from twisted.internet import reactor +from jmclient.scripts_support import wrap_main, finalize_main_task from twisted.internet.defer import Deferred from twisted.web.server import Site @@ -330,10 +331,13 @@ class SNICKERServerManager(object): if self.shutdown_callback: self.shutdown_callback() + def snicker_server_start(port, local_port=None, hsdir=None): ssm = SNICKERServerManager(port, local_port=local_port, hsdir=hsdir) ssm.start_snicker_server_and_tor() + +@wrap_main async def _main(): load_program_config(bs="no-blockchain") check_and_start_tor() @@ -350,5 +354,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/tumbler.py b/scripts/tumbler.py index 0248120..3bc215e 100755 --- a/scripts/tumbler.py +++ b/scripts/tumbler.py @@ -5,7 +5,7 @@ import sys import jmclient # install asyncioreactor from twisted.internet import reactor -from scripts_support import wrap_main, finalize_main_task +from jmclient.scripts_support import wrap_main, finalize_main_task import os import pprint diff --git a/scripts/wallet-tool.py b/scripts/wallet-tool.py index 10c2f3f..5b9b319 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, finalize_main_task +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import jmprint from jmclient import wallet_tool_main diff --git a/scripts/yg-privacyenhanced.py b/scripts/yg-privacyenhanced.py index d005720..d1332f3 100755 --- a/scripts/yg-privacyenhanced.py +++ b/scripts/yg-privacyenhanced.py @@ -6,11 +6,10 @@ import sys import jmclient # install asyncioreactor from twisted.internet import reactor -from scripts_support import wrap_main, finalize_main_task +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import get_log, jmprint, EXIT_ARGERROR from jmbitcoin import amount_to_str -from jmclient import YieldGeneratorBasic, ygmain, jm_single # This is a maker for the purposes of generating a yield from held bitcoins # while maximising the difficulty of spying on blockchain activity. diff --git a/scripts/yield-generator-basic.py b/scripts/yield-generator-basic.py index 014ddf0..4e6cc79 100755 --- a/scripts/yield-generator-basic.py +++ b/scripts/yield-generator-basic.py @@ -4,7 +4,7 @@ import asyncio import jmclient # install asyncioreactor from twisted.internet import reactor -from scripts_support import wrap_main, finalize_main_task +from jmclient.scripts_support import wrap_main, finalize_main_task from jmbase import jmprint from jmclient import YieldGeneratorBasic, ygmain diff --git a/scripts/scripts_support.py b/src/jmclient/scripts_support.py similarity index 95% rename from scripts/scripts_support.py rename to src/jmclient/scripts_support.py index edb3f53..a62de88 100644 --- a/scripts/scripts_support.py +++ b/src/jmclient/scripts_support.py @@ -4,7 +4,6 @@ import asyncio import sys from functools import wraps -import jmclient # install asyncioreactor from twisted.internet import reactor from jmbase import jmprint