From 67e1688aa1aec30db6356a43a5cc7d74db5c6516 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Sat, 15 Feb 2025 09:54:19 +0000 Subject: [PATCH] cfg: support `usage()` on bad invocation for txcreate --- mmgen/help/__init__.py | 2 +- mmgen/main_txcreate.py | 3 +++ mmgen/opts.py | 1 + test/cmdtest_d/ct_help.py | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mmgen/help/__init__.py b/mmgen/help/__init__.py index 955548cd..3fd6e5b8 100755 --- a/mmgen/help/__init__.py +++ b/mmgen/help/__init__.py @@ -49,7 +49,7 @@ def gen_arg_tuple(cfg, func, text): def help_notes(k, *args, **kwargs): import importlib return getattr(importlib.import_module( - f'{cfg._opts.help_pkg}.help_notes').help_notes(proto, cfg), k)(*args, **kwargs) + f'{cfg._help_pkg}.help_notes').help_notes(proto, cfg), k)(*args, **kwargs) def help_mod(modname): import importlib diff --git a/mmgen/main_txcreate.py b/mmgen/main_txcreate.py index 431903c7..b7d433a8 100755 --- a/mmgen/main_txcreate.py +++ b/mmgen/main_txcreate.py @@ -101,6 +101,9 @@ opts_data = { cfg = Config(opts_data=opts_data) +if not cfg.info and len(cfg._args) < {'tx': 1, 'swaptx': 2}[target]: + cfg._usage() + async def main(): if cfg.autosign: diff --git a/mmgen/opts.py b/mmgen/opts.py index cb811a5b..d1d97dd6 100755 --- a/mmgen/opts.py +++ b/mmgen/opts.py @@ -279,6 +279,7 @@ class Opts: # Make these available to usage(): cfg._usage_data = opts_data['text'].get('usage2') or opts_data['text']['usage'] cfg._usage_code = opts_data.get('code', {}).get('usage') + cfg._help_pkg = self.help_pkg if os.getenv('MMGEN_DEBUG_OPTS'): opt_preproc_debug(po) diff --git a/test/cmdtest_d/ct_help.py b/test/cmdtest_d/ct_help.py index 555ceae3..bb36c5a7 100755 --- a/test/cmdtest_d/ct_help.py +++ b/test/cmdtest_d/ct_help.py @@ -50,7 +50,7 @@ class CmdTestHelp(CmdTestBase): return self._usage('walletgen', ['foo'], True, False, 1) def usage4(self): - return self._usage('tool' if self.coin == 'xmr' else 'addrgen', [], True, True, 1) + return self._usage('tool' if self.coin == 'xmr' else 'txcreate', [], True, True, 1) def _usage(self, cmd_arg, args, no_passthru_opts, add_coin_opt, exit_val): if cmd := (None if self._gen_skiplist(cmd_arg) else cmd_arg):