From 7d8d9c8f0508434505b4b380f657a464ca3007ce Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Sun, 1 Nov 2026 12:51:06 +0000 Subject: [PATCH] mmgen-xmrwallet: improve args parsing --- mmgen/main_xmrwallet.py | 31 +++++++++++++++---------------- mmgen/xmrwallet/__init__.py | 9 +++++++++ 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/mmgen/main_xmrwallet.py b/mmgen/main_xmrwallet.py index 9faa15a2..d94a73d9 100644 --- a/mmgen/main_xmrwallet.py +++ b/mmgen/main_xmrwallet.py @@ -102,30 +102,29 @@ opts_data = { cfg = Config(opts_data=opts_data, init_opts={'coin':'xmr'}) -cmd_args = cfg._args - -if cmd_args and cfg.autosign and ( - cmd_args[0].replace('-', '_') in ( - xmrwallet.kafile_arg_ops - + ('export_outputs', 'export_outputs_sign', 'import_key_images', 'txview', 'txlist')) - or len(cmd_args) == 1 and cmd_args[0] in ('submit', 'resubmit', 'abort') - ): - cmd_args.insert(1, None) - -if len(cmd_args) < 2: +if cmd_args := cfg._args: + usr_op = cmd_args.pop(0) + op = usr_op.replace('-', '_') +else: cfg._usage() -usr_op = cmd_args.pop(0) -op = usr_op.replace('-', '_') -infile = cmd_args.pop(0) -wallets = spec = None +if cfg.autosign and ( + op in xmrwallet.kafile_arg_ops + xmrwallet.file_arg_ops + or (not cmd_args and op in ('relay', 'submit', 'resubmit', 'abort'))): + cmd_args.insert(0, None) + +if cmd_args: + infile = cmd_args.pop(0) + wallets = spec = None +else: + cfg._usage() match op: case 'relay' | 'submit' | 'resubmit' | 'abort': if len(cmd_args) != 0: cfg._usage() case 'txview' | 'txlist': - infile = [infile] + cmd_args + infile = [infile] + cmd_args # pylint: disable=used-before-assignment case 'create' | 'sync' | 'list' | 'view' | 'listview' | 'dump_json' | 'dump' | 'restore': if len(cmd_args) > 1: cfg._usage() diff --git a/mmgen/xmrwallet/__init__.py b/mmgen/xmrwallet/__init__.py index 75b085c6..aefb619a 100644 --- a/mmgen/xmrwallet/__init__.py +++ b/mmgen/xmrwallet/__init__.py @@ -88,6 +88,15 @@ kafile_arg_ops = ( 'dump', 'restore') +file_arg_ops = ( + 'export_outputs', + 'export_outputs_sign', + 'import_key_images', + 'import_outputs', + 'sign', + 'txview', + 'txlist') + opts = ( 'wallet_dir', 'daemon',