proto.vm.tx.new: improve cmd args processing

This commit is contained in:
The MMGen Project 2026-09-06 10:08:41 +00:00
commit 73cf5814cf
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
3 changed files with 14 additions and 14 deletions

View file

@ -42,20 +42,20 @@ class New:
async def process_cmdline_args(self, cmd_args, ad_f, ad_w):
lc = len(cmd_args)
if lc == 2 and self.is_swap:
data_arg = cmd_args.pop()
lc = 1
assert data_arg.startswith('data:'), f'{data_arg}: invalid data arg (must start with "data:")'
self.swap_memo = data_arg.removeprefix('data:')
def process_data_arg(arg):
assert arg.startswith('data:'), f'{arg}: invalid data arg (must start with "data:")'
self.swap_memo = arg.removeprefix('data:')
self.set_gas_with_data(self.swap_memo.encode())
if lc == 0 and self.usr_contract_data and 'Token' not in self.name:
return
if lc != 1:
die(1, f'{lc} output{suf(lc)} specified, but VM transactions must have exactly one')
match len(cmd_args):
case 1:
pass
case 0 if self.usr_contract_data and 'Token' not in self.name:
return
case 2 if self.is_swap:
process_data_arg(cmd_args[1])
case n:
die(1, f'{n} output{suf(n)} specified, but VM transactions must have exactly one')
a = self.parse_cmdline_arg(self.proto, cmd_args[0], ad_f, ad_w)

View file

@ -198,7 +198,7 @@ class New(Base):
else:
die(2, f'{arg_in}: invalid command-line argument')
return _pa(arg, mmid, coin_addr, amt, None, is_vault)
return _pa(arg, mmid or None, coin_addr, amt, None, is_vault)
async def get_autochg_addr(self, proto, arg, *, exclude, desc, all_addrtypes=False):
from ..tw.addresses import TwAddresses

View file

@ -174,7 +174,7 @@ class NewSwap(New):
[f'vault,{args.send_amt}', chg_output.mmid] if args.send_amt else
['vault'])
return ret + [f'data:{memo}']
return tuple(ret + [f'data:{memo}'])
def update_vault_addr(self, c, *, addr='inbound_address'):
vault_idx = self.vault_idx