help notes cleanups throughout (whitespace, var renames)

This commit is contained in:
The MMGen Project 2026-05-05 12:07:32 +00:00
commit db8b769faa
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
25 changed files with 110 additions and 133 deletions

View file

@ -103,7 +103,9 @@ class Help:
def gen_output(): def gen_output():
yield ' {} {}'.format(gc.prog_name.upper() + ':', opts.opts_data['text']['desc'].strip()) yield ' {} {}'.format(gc.prog_name.upper() + ':', opts.opts_data['text']['desc'].strip())
yield ''
yield make_usage_str(cfg, caller='help') yield make_usage_str(cfg, caller='help')
yield ''
yield self.help_type.upper().replace('_', ' ') + ':' yield self.help_type.upper().replace('_', ' ') + ':'
# process code for options # process code for options

View file

@ -16,6 +16,7 @@ def help(proto, cfg):
match proto.base_proto: match proto.base_proto:
case 'Bitcoin': case 'Bitcoin':
return """ return """
Rescanning now uses the scantxoutset RPC call and a selective scan of Rescanning now uses the scantxoutset RPC call and a selective scan of
blocks containing the relevant UTXOs for much faster performance than the blocks containing the relevant UTXOs for much faster performance than the
previous implementation. The rescan operation typically takes around two previous implementation. The rescan operation typically takes around two
@ -31,9 +32,11 @@ the blockchain may take up to several hours.
A full rescan is required if you plan to use mmgen-tool txhist or the A full rescan is required if you plan to use mmgen-tool txhist or the
automatic change address functionality of mmgen-txcreate, or wish to see automatic change address functionality of mmgen-txcreate, or wish to see
which addresses in your tracking wallet are used. Without it, all addresses which addresses in your tracking wallet are used. Without it, all addresses
without balances will be displayed as new.""" without balances will be displayed as new.
"""
case 'Monero': case 'Monero':
return """ return """
For Monero, --autosign is required, and a key-address file on the removable For Monero, --autosign is required, and a key-address file on the removable
device is used instead of a user-specified address file as with other coins. device is used instead of a user-specified address file as with other coins.
@ -50,6 +53,7 @@ configured via --xmrwallets comprises the user’s tracking wallet.
If a view-only wallet for a given address already exists, its left untouched If a view-only wallet for a given address already exists, its left untouched
and no action is performed. To add view-only wallets to your tracking wallet, and no action is performed. To add view-only wallets to your tracking wallet,
just specify additional wallet indexes via --xmrwallets during the offline just specify additional wallet indexes via --xmrwallets during the offline
setup process.""" setup process.
"""
case _: case _:
return '' return ''

View file

@ -12,6 +12,9 @@
help: help notes functions for MMGen suite commands help: help notes functions for MMGen suite commands
""" """
# To permit concatenation of blocks of help text in any order, each block (if not empty)
# should start with two newlines and end with one newline.
class help_notes: class help_notes:
def __init__(self, proto, cfg): def __init__(self, proto, cfg):
@ -91,11 +94,10 @@ class help_notes:
def password_formats(self): def password_formats(self):
from ..passwdlist import PasswordList from ..passwdlist import PasswordList
pwi_fs = '{:8} {:1} {:26} {:<7} {:<7} {}' pwi_fs = '{:8} {:1} {:26} {:<7} {:<7} {}'
return '\n '.join( return '\n\n ' + '\n '.join(
[pwi_fs.format('Code', '', 'Description', 'Min Len', 'Max Len', 'Default Len')] + [pwi_fs.format('Code', '', 'Description', 'Min Len', 'Max Len', 'Default Len')] +
[pwi_fs.format(k, '-', v.desc, v.min_len, v.max_len, v.dfl_len) [pwi_fs.format(k, '-', v.desc, v.min_len, v.max_len, v.dfl_len)
for k, v in PasswordList.pw_info.items()] for k, v in PasswordList.pw_info.items()])
)
def dfl_mmtype(self): def dfl_mmtype(self):
from ..addr import MMGenAddrType from ..addr import MMGenAddrType
@ -104,19 +106,21 @@ class help_notes:
def address_types(self): def address_types(self):
from ..addr import MMGenAddrType from ..addr import MMGenAddrType
return """ return """
ADDRESS TYPES: ADDRESS TYPES:
Code Type Description Code Type Description
---- ---- ----------- ---- ---- -----------
""" + format('\n '.join(['{}{:<12} - {}'.format(k, v.name, v.desc) """ + format('\n '.join(['{}{:<12} - {}'.format(k, v.name, v.desc)
for k, v in MMGenAddrType.mmtypes.items()])) for k, v in MMGenAddrType.mmtypes.items()])) + '\n'
def fmt_codes(self): def fmt_codes(self):
from ..wallet import format_fmt_codes from ..wallet import format_fmt_codes
return """ return """
FMT CODES: FMT CODES:
""" + '\n '.join(format_fmt_codes().splitlines()) """ + '\n '.join(format_fmt_codes().splitlines()) + '\n'
def coin_id(self): def coin_id(self):
return self.proto.coin_id return self.proto.coin_id
@ -148,6 +152,7 @@ FMT CODES:
def gas_limit(self, target): def gas_limit(self, target):
return """ return """
GAS LIMIT GAS LIMIT
This option specifies the maximum gas allowance for an Ethereum transaction. This option specifies the maximum gas allowance for an Ethereum transaction.
@ -158,8 +163,7 @@ Parameter must be an integer or one of the special values ‘fallback’ (for a
locally computed sane default) or auto (for gas estimate via an RPC call, locally computed sane default) or auto (for gas estimate via an RPC call,
in the case of a token transaction, or locally computed default, in the case in the case of a token transaction, or locally computed default, in the case
of a standard transaction). The default is auto. of a standard transaction). The default is auto.
""" if target == 'swaptx' or self.proto.base_coin == 'ETH' else ''
""" if target == 'swaptx' or self.proto.base_coin == 'ETH' else ''
def fee(self, all_coins=False): def fee(self, all_coins=False):
@ -168,6 +172,7 @@ of a standard transaction). The default is ‘auto’.
from ..tx import BaseTX from ..tx import BaseTX
text = """ text = """
FEE SPECIFICATION FEE SPECIFICATION
Transaction fees, both on the command line and at the interactive prompt, may Transaction fees, both on the command line and at the interactive prompt, may
@ -187,24 +192,26 @@ as {r}, using an integer followed by {l}, for{s}{u}""".format(
r = BaseTX(cfg=self.cfg, proto=eth_proto).rel_fee_desc, r = BaseTX(cfg=self.cfg, proto=eth_proto).rel_fee_desc,
l = self.fee_spec_letters(use_quotes=True, proto=eth_proto), l = self.fee_spec_letters(use_quotes=True, proto=eth_proto),
u = self.fee_spec_names(proto=eth_proto, linebreak='\n')) u = self.fee_spec_names(proto=eth_proto, linebreak='\n'))
+ ' (for Ethereum)\n\n') + ' (for Ethereum)\n')
else: else:
return text + '.\n\n' return text + '.\n'
def passwd(self): def passwd(self):
return """ return """
PASSPHRASE NOTE: PASSPHRASE NOTE:
For passphrases all combinations of whitespace are equal, and leading and For passphrases all combinations of whitespace are equal, and leading and
trailing space are ignored. This permits reading passphrase or brainwallet trailing space are ignored. This permits reading passphrase or brainwallet
data from a multi-line file with free spacing and indentation. data from a multi-line file with free spacing and indentation.
""".strip() """
def brainwallet(self): def brainwallet(self):
return """ return """
BRAINWALLET NOTE: BRAINWALLET NOTE:
To thwart dictionary attacks, its recommended to use a strong hash preset To thwart dictionary attacks, its recommended to use a strong hash preset
with brainwallets. For a brainwallet passphrase to generate the correct with brainwallets. For a brainwallet passphrase to generate the correct
seed, the same seed length and hash preset parameters must always be used. seed, the same seed length and hash preset parameters must always be used.
""".strip() """

View file

@ -15,6 +15,7 @@ help.seedsplit: seedsplit help notes for MMGen suite
def help(proto, cfg): def help(proto, cfg):
from ..seedsplit import SeedShareIdx, SeedShareCount, MasterShareIdx from ..seedsplit import SeedShareIdx, SeedShareCount, MasterShareIdx
return """ return """
COMMAND NOTES: COMMAND NOTES:
This command generates shares one at a time. Shares may be output to any This command generates shares one at a time. Shares may be output to any
@ -98,8 +99,7 @@ EXAMPLES:
$ mmgen-seedsplit -M4 -o hincog -J my.hincog,1325 1:2 # Step M (share A) $ mmgen-seedsplit -M4 -o hincog -J my.hincog,1325 1:2 # Step M (share A)
$ mmgen-seedsplit -M4 -o bip39 2:2 # Step N (share B) $ mmgen-seedsplit -M4 -o bip39 2:2 # Step N (share B)
$ mmgen-seedjoin -M4 -H my.hincog,1325 <output_of_step_N> $ mmgen-seedjoin -M4 -H my.hincog,1325 <output_of_step_N>
""".format(
""".strip().format(
si = SeedShareIdx, si = SeedShareIdx,
sc = SeedShareCount, sc = SeedShareCount,
mi = MasterShareIdx) mi = MasterShareIdx)

View file

@ -15,6 +15,7 @@ help.subwallet: subwallet help notes for the MMGen Wallet suite
def help(proto, cfg): def help(proto, cfg):
from ..subseed import SubSeedIdxRange from ..subseed import SubSeedIdxRange
return f""" return f"""
SUBWALLETS: SUBWALLETS:
Subwallets (subseeds) are specified by a Subseed Index consisting of: Subwallets (subseeds) are specified by a Subseed Index consisting of:
@ -49,4 +50,4 @@ Seed ID collisions among them doesn’t present a problem.
A safe rule of thumb, therefore, is for *each user* to derive all of his/her A safe rule of thumb, therefore, is for *each user* to derive all of his/her
subwallets from a single parent. This leaves each user with a total of two subwallets from a single parent. This leaves each user with a total of two
million subwallets, which should be enough for most practical purposes. million subwallets, which should be enough for most practical purposes.
""".strip() """

View file

@ -14,6 +14,7 @@ help.swaptxcreate: swaptxcreate and swaptxdo help notes for the MMGen Wallet sui
def help(proto, cfg): def help(proto, cfg):
return """ return """
This script is similar in operation to mmgen-txcreate, only with additional This script is similar in operation to mmgen-txcreate, only with additional
steps. Users are advised to first familiarize themselves with the use of that steps. Users are advised to first familiarize themselves with the use of that
script before attempting to perform a swap with this one. script before attempting to perform a swap with this one.

View file

@ -17,6 +17,7 @@ from ..cfg import gc
def help(proto, cfg): def help(proto, cfg):
return f""" return f"""
EXAMPLES: EXAMPLES:
Display available swap assets: Display available swap assets:

View file

@ -52,6 +52,7 @@ specified.
""" if proto.has_usr_fee else '' """ if proto.has_usr_fee else ''
return f""" return f"""
The transactions outputs are listed on the command line, while its inputs The transactions outputs are listed on the command line, while its inputs
are chosen from a list of the wallets unspent outputs via an interactive are chosen from a list of the wallets unspent outputs via an interactive
menu. Alternatively, inputs may be specified using the --inputs option. menu. Alternatively, inputs may be specified using the --inputs option.

View file

@ -27,6 +27,7 @@ def help(proto, cfg):
match proto.base_proto: match proto.base_proto:
case 'Bitcoin': case 'Bitcoin':
return f""" return f"""
EXAMPLES: EXAMPLES:
Send 0.123 {proto.coin} to an external {proto.name} address, returning the change to a Send 0.123 {proto.coin} to an external {proto.name} address, returning the change to a
@ -60,6 +61,7 @@ EXAMPLES:
case 'Monero': case 'Monero':
return f""" return f"""
EXAMPLES: EXAMPLES:
Send 0.123 {proto.coin} to an external {proto.name} address: Send 0.123 {proto.coin} to an external {proto.name} address:
@ -73,6 +75,7 @@ EXAMPLES:
case _: case _:
return f""" return f"""
EXAMPLES: EXAMPLES:
Send 0.123 {proto.coin} to an external {proto.name} address: Send 0.123 {proto.coin} to an external {proto.name} address:

View file

@ -21,6 +21,7 @@ def help(proto, cfg):
return CoinDaemon(cfg, network_id=proto.coin).exec_fn if proto.coin in CoinDaemon.coins else 'bitcoind' return CoinDaemon(cfg, network_id=proto.coin).exec_fn if proto.coin in CoinDaemon.coins else 'bitcoind'
return """ return """
Transactions may contain both {pnm} or non-{pnm} input addresses. Transactions may contain both {pnm} or non-{pnm} input addresses.
To sign non-{pnm} inputs, a coin daemon wallet dump or flat key list is used To sign non-{pnm} inputs, a coin daemon wallet dump or flat key list is used

View file

@ -16,6 +16,7 @@ def help(proto, cfg):
from ..xmrwallet import uarg_info from ..xmrwallet import uarg_info
return """ return """
Many operations take an optional wallets argument: one or more address Many operations take an optional wallets argument: one or more address
indexes (expressed as a comma-separated list and/or hyphenated range) in indexes (expressed as a comma-separated list and/or hyphenated range) in
the default or specified key-address file, each corresponding to a Monero the default or specified key-address file, each corresponding to a Monero
@ -462,9 +463,8 @@ Tutorial above.
Once youve gained proficiency with the autosigning process and feel ready Once youve gained proficiency with the autosigning process and feel ready
to delete your old hot wallets, make sure to do so securely using shred, to delete your old hot wallets, make sure to do so securely using shred,
wipe or some other secure deletion utility. wipe or some other secure deletion utility.
""".strip().format( """.format(
newaddr_spec = uarg_info['newaddr_spec'].annot, newaddr_spec = uarg_info['newaddr_spec'].annot,
label_spec = uarg_info['label_spec'].annot, label_spec = uarg_info['label_spec'].annot,
transfer_spec = uarg_info['transfer_spec'].annot, transfer_spec = uarg_info['transfer_spec'].annot,
sweep_spec = uarg_info['sweep_spec'].annot, sweep_spec = uarg_info['sweep_spec'].annot)
)

View file

@ -31,7 +31,7 @@ if gc.prog_name == 'mmgen-keygen':
gen_clsname = 'KeyAddrList' gen_clsname = 'KeyAddrList'
gen_desc = 'secret keys' gen_desc = 'secret keys'
filter_codes = ['-', 'k'] filter_codes = ['-', 'k']
note_addrkey = 'By default, both addresses and secret keys are generated.\n\n' note_addrkey = '\n\nBy default, both addresses and secret keys are generated.'
else: else:
gen_what = 'addresses' gen_what = 'addresses'
gen_clsname = 'AddrList' gen_clsname = 'AddrList'
@ -86,19 +86,12 @@ opts_data = {
NOTES FOR THIS COMMAND NOTES FOR THIS COMMAND
Address indexes are given as a comma-separated list and/or hyphen-separated Address indexes are given as a comma-separated list and/or hyphen-separated
range(s). range(s).{n_ak}
{n_addrkey}If available, the libsecp256k1 library will be used for address generation. If available, the libsecp256k1 library will be used for address generation.
NOTES FOR ALL GENERATOR COMMANDS NOTES FOR ALL GENERATOR COMMANDS{n_sw}{n_pw}{n_bw}{n_at}{n_fc}"""
{n_sw}{n_pw}{n_bw}
{n_at}
{n_fmt}
"""
}, },
'code': { 'code': {
'options': lambda proto, help_notes, cfg, s: s.format( 'options': lambda proto, help_notes, cfg, s: s.format(
@ -109,16 +102,14 @@ range(s).
pnm = gc.proj_name, pnm = gc.proj_name,
what = gen_what, what = gen_what,
cfg = cfg, cfg = cfg,
gc = gc, gc = gc),
),
'notes': lambda help_mod, help_notes, s: s.format( 'notes': lambda help_mod, help_notes, s: s.format(
n_addrkey = note_addrkey, n_ak = note_addrkey,
n_sw = help_mod('subwallet')+'\n\n', n_sw = help_mod('subwallet'),
n_pw = help_notes('passwd')+'\n\n', n_pw = help_notes('passwd'),
n_bw = help_notes('brainwallet'), n_bw = help_notes('brainwallet'),
n_fmt = help_notes('fmt_codes'), n_fc = help_notes('fmt_codes'),
n_at = help_notes('address_types'), n_at = help_notes('address_types'))
)
} }
} }

View file

@ -131,10 +131,8 @@ following format:
where ADDRTYPE_CODE is a one-letter address type code from the list below, and where ADDRTYPE_CODE is a one-letter address type code from the list below, and
ADDR_IDX_SPEC is a comma-separated list of address indexes or hyphen-separated ADDR_IDX_SPEC is a comma-separated list of address indexes or hyphen-separated
address index ranges. address index ranges.
{n_at} {n_at}
NOTES NOTES
Message signing operations are supported for Bitcoin, Ethereum and code forks Message signing operations are supported for Bitcoin, Ethereum and code forks

View file

@ -80,9 +80,9 @@ range(s).
Changing either the password format (base32,base58) or length alters the seed Changing either the password format (base32,base58) or length alters the seed
and thus generates a completely new set of passwords. and thus generates a completely new set of passwords.
PASSWORD FORMATS:
{pfi} PASSWORD FORMATS:{n_pf}
EXAMPLES: EXAMPLES:
@ -104,14 +104,7 @@ EXAMPLES:
about inadvertent reuse of private data. about inadvertent reuse of private data.
NOTES FOR ALL GENERATOR COMMANDS NOTES FOR ALL GENERATOR COMMANDS{n_pw}{n_bw}{n_fc}"""
{n_pw}
{n_bw}
{n_fmt}
"""
}, },
'code': { 'code': {
'options': lambda cfg, help_notes, s: s.format( 'options': lambda cfg, help_notes, s: s.format(
@ -129,8 +122,8 @@ EXAMPLES:
fs = '", "'.join(MMGenPWIDString.forbidden), fs = '", "'.join(MMGenPWIDString.forbidden),
n_pw = help_notes('passwd'), n_pw = help_notes('passwd'),
n_bw = help_notes('brainwallet'), n_bw = help_notes('brainwallet'),
pfi = help_notes('password_formats'), n_pf = help_notes('password_formats'),
n_fmt = help_notes('fmt_codes'), n_fc = help_notes('fmt_codes'),
gc = gc, gc = gc,
) )
} }

View file

@ -53,7 +53,7 @@ opts_data = {
cli - execute an RPC call with supplied arguments cli - execute an RPC call with supplied arguments
wallet_cli - execute a wallet RPC call with supplied arguments (wallet wallet_cli - execute a wallet RPC call with supplied arguments (wallet
is first argument) is first argument)
""" """
} }
} }

View file

@ -70,10 +70,7 @@ The --id-str option is required only for master share joins. For ordinary
joins it will be ignored. joins it will be ignored.
For usage examples, see the help screen for the 'mmgen-seedsplit' command. For usage examples, see the help screen for the 'mmgen-seedsplit' command.
{n_pw}{n_fc}
{n_pw}
{f}
""" """
}, },
'code': { 'code': {
@ -84,7 +81,7 @@ For usage examples, see the help screen for the 'mmgen-seedsplit' command.
gc = gc, gc = gc,
), ),
'notes': lambda cfg, help_notes, s: s.format( 'notes': lambda cfg, help_notes, s: s.format(
f = help_notes('fmt_codes'), n_fc = help_notes('fmt_codes'),
n_pw = help_notes('passwd'), n_pw = help_notes('passwd'),
) )
} }

View file

@ -51,7 +51,8 @@ opts_data = {
-l, --locktime= t Lock time (block height or unix seconds) -l, --locktime= t Lock time (block height or unix seconds)
(default: {bh}) (default: {bh})
""", """,
'notes': f"""\n 'notes': f"""
This command creates two transactions: one (with the timelock) to be broadcast This command creates two transactions: one (with the timelock) to be broadcast
on the long chain and one on the short chain after a replayable chain fork. on the long chain and one on the short chain after a replayable chain fork.
Only {gc.proj_name} addresses may be spent to. Only {gc.proj_name} addresses may be spent to.

View file

@ -59,7 +59,7 @@ opts_data = {
COMMANDS COMMANDS
{ch} {n_th}
Type {pn} help <command> for help on a particular command Type {pn} help <command> for help on a particular command
""" """
}, },
@ -71,7 +71,7 @@ Type ‘{pn} help <command>’ for help on a particular command
gc = gc, gc = gc,
), ),
'notes': lambda cfg, s, help_notes: s.format( 'notes': lambda cfg, s, help_notes: s.format(
ch = help_notes('tool_help'), n_th = help_notes('tool_help'),
pn = gc.prog_name) pn = gc.prog_name)
} }
} }

View file

@ -115,12 +115,9 @@ When bumping a swap transaction, the swap protocol’s quote server on the
Internet must be reachable either directly or via the SOCKS5 proxy specified Internet must be reachable either directly or via the SOCKS5 proxy specified
with the --proxy option. To improve privacy, its recommended to proxy with the --proxy option. To improve privacy, its recommended to proxy
requests to the quote server via Tor or some other anonymity network. requests to the quote server via Tor or some other anonymity network.
{n_gl}{n_fe}{n_ts}
{g}{F}{s}
Seed source files must have the canonical extensions listed in the 'FileExt' Seed source files must have the canonical extensions listed in the 'FileExt'
column below: column below:{n_fc}
{f}
""" """
}, },
'code': { 'code': {
@ -138,10 +135,10 @@ column below:
dsl = help_notes('dfl_seed_len'), dsl = help_notes('dfl_seed_len'),
cu = proto.coin), cu = proto.coin),
'notes': lambda help_mod, help_notes, s: s.format( 'notes': lambda help_mod, help_notes, s: s.format(
g = help_notes('gas_limit', target=None), n_gl = help_notes('gas_limit', target=None),
F = help_notes('fee'), n_fe = help_notes('fee'),
s = help_mod('txsign'), n_ts = help_mod('txsign'),
f = help_notes('fmt_codes')), n_fc = help_notes('fmt_codes')),
} }
} }

View file

@ -95,7 +95,7 @@ opts_data = {
-- -y, --yes Answer 'yes' to prompts, suppress non-essential output -- -y, --yes Answer 'yes' to prompts, suppress non-essential output
e- -X, --cached-balances Use cached balances e- -X, --cached-balances Use cached balances
""", """,
'notes': '\n{c}\n{n_at}\n\n{g}{F}{x}', 'notes': '{n_tc}{n_at}{n_gl}{n_fe}{n_cx}',
}, },
'code': { 'code': {
'usage': lambda cfg, proto, help_notes, s: s.format( 'usage': lambda cfg, proto, help_notes, s: s.format(
@ -113,11 +113,11 @@ opts_data = {
x_all = fmt_list(cfg._autoset_opts['swap_proto'].choices, fmt='no_spc'), x_all = fmt_list(cfg._autoset_opts['swap_proto'].choices, fmt='no_spc'),
x_dfl = cfg._autoset_opts['swap_proto'].choices[0]), x_dfl = cfg._autoset_opts['swap_proto'].choices[0]),
'notes': lambda cfg, help_mod, help_notes, s: s.format( 'notes': lambda cfg, help_mod, help_notes, s: s.format(
c = help_mod(f'{target}create'), n_tc = help_mod(f'{target}create'),
g = help_notes('gas_limit', target), n_gl = help_notes('gas_limit', target),
F = help_notes('fee', all_coins={'tx': False, 'swaptx': True}[target]), n_fe = help_notes('fee', all_coins={'tx': False, 'swaptx': True}[target]),
n_at = help_notes('address_types'), n_at = help_notes('address_types'),
x = help_mod(f'{target}create_examples')) n_cx = help_mod(f'{target}create_examples'))
} }
} }

View file

@ -119,19 +119,11 @@ opts_data = {
-- -y, --yes Answer 'yes' to prompts, suppress non-essential output -- -y, --yes Answer 'yes' to prompts, suppress non-essential output
-- -z, --show-hash-presets Show information on available hash presets -- -z, --show-hash-presets Show information on available hash presets
""", """,
'notes': """ 'notes': """{n_tc}{n_at}{n_gl}{n_fe}
{c}
{n_at}
{g}{F} SIGNING NOTES{n_ts}
SIGNING NOTES
{s}
Seed source files must have the canonical extensions listed in the 'FileExt' Seed source files must have the canonical extensions listed in the 'FileExt'
column below: column below:{n_fc}{n_cx}"""
{f}
{x}"""
}, },
'code': { 'code': {
'usage': lambda cfg, proto, help_notes, s: s.format( 'usage': lambda cfg, proto, help_notes, s: s.format(
@ -157,13 +149,13 @@ column below:
x_all = fmt_list(cfg._autoset_opts['swap_proto'].choices, fmt='no_spc'), x_all = fmt_list(cfg._autoset_opts['swap_proto'].choices, fmt='no_spc'),
x_dfl = cfg._autoset_opts['swap_proto'].choices[0]), x_dfl = cfg._autoset_opts['swap_proto'].choices[0]),
'notes': lambda cfg, help_mod, help_notes, s: s.format( 'notes': lambda cfg, help_mod, help_notes, s: s.format(
c = help_mod(f'{target}create'), n_tc = help_mod(f'{target}create'),
g = help_notes('gas_limit', target), n_gl = help_notes('gas_limit', target),
F = help_notes('fee'), n_fe = help_notes('fee'),
n_at = help_notes('address_types'), n_at = help_notes('address_types'),
f = help_notes('fmt_codes'), n_fc = help_notes('fmt_codes'),
s = help_mod('txsign'), n_ts = help_mod('txsign'),
x = help_mod(f'{target}create_examples')) n_cx = help_mod(f'{target}create_examples'))
} }
} }

View file

@ -71,6 +71,7 @@ opts_data = {
-y, --yes Answer 'yes' to prompts, suppress non-essential output -y, --yes Answer 'yes' to prompts, suppress non-essential output
""", """,
'notes': """ 'notes': """
With --autosign, combined with --status or --receipt, the optional index or With --autosign, combined with --status or --receipt, the optional index or
range arg represents an index or range into the list of sent transaction files range arg represents an index or range into the list of sent transaction files
on the removable device, in reverse chronological order. 0 (the default) on the removable device, in reverse chronological order. 0 (the default)

View file

@ -72,13 +72,9 @@ opts_data = {
to non-wallet addresses to non-wallet addresses
-y, --yes Answer 'yes' to prompts, suppress non-essential output -y, --yes Answer 'yes' to prompts, suppress non-essential output
""", """,
'notes': """ 'notes': """{n_ts}
{t}
Seed source files must have the canonical extensions listed in the 'FileExt' Seed source files must have the canonical extensions listed in the 'FileExt'
column below: column below:{n_fc}"""
{f}
"""
}, },
'code': { 'code': {
'options': lambda cfg, proto, help_notes, s: s.format( 'options': lambda cfg, proto, help_notes, s: s.format(
@ -93,8 +89,8 @@ column below:
ss_max = SubSeedIdxRange.max_idx, ss_max = SubSeedIdxRange.max_idx,
cu = proto.coin), cu = proto.coin),
'notes': lambda help_mod, help_notes, s: s.format( 'notes': lambda help_mod, help_notes, s: s.format(
t = help_mod('txsign'), n_ts = help_mod('txsign'),
f = help_notes('fmt_codes')), n_fc = help_notes('fmt_codes')),
} }
} }

View file

@ -119,12 +119,7 @@ opts_data = {
-w -S, --stdout Write wallet data to stdout instead of file -w -S, --stdout Write wallet data to stdout instead of file
-- -v, --verbose Produce more verbose output -- -v, --verbose Produce more verbose output
""", """,
'notes': """ 'notes': '{n_ss}{n_sw}{n_pw}{n_bw}{n_fc}'
{n_ss}{n_sw}{n_pw}{n_bw}
{f}
"""
}, },
'code': { 'code': {
'options': lambda cfg, help_notes, s: s.format( 'options': lambda cfg, help_notes, s: s.format(
@ -134,15 +129,13 @@ opts_data = {
ms_max = help_notes('MasterShareIdx').max_val, ms_max = help_notes('MasterShareIdx').max_val,
dsl = help_notes('dfl_seed_len'), dsl = help_notes('dfl_seed_len'),
cfg = cfg, cfg = cfg,
gc = gc, gc = gc),
),
'notes': lambda cfg, help_mod, help_notes, s: s.format( 'notes': lambda cfg, help_mod, help_notes, s: s.format(
f = help_notes('fmt_codes'), n_ss = ('', help_mod('seedsplit'))[do_ss_note],
n_ss = ('', help_mod('seedsplit')+'\n\n')[do_ss_note], n_sw = ('', help_mod('subwallet'))[do_sw_note],
n_sw = ('', help_mod('subwallet')+'\n\n')[do_sw_note],
n_pw = help_notes('passwd'), n_pw = help_notes('passwd'),
n_bw = ('', '\n\n'+help_notes('brainwallet'))[do_bw_note] n_bw = ('', help_notes('brainwallet'))[do_bw_note],
) n_fc = help_notes('fmt_codes'))
} }
} }

View file

@ -86,10 +86,7 @@ opts_data = {
-U, --wallet-rpc-user=user Wallet RPC username (currently: {cfg.monero_wallet_rpc_user!r}) -U, --wallet-rpc-user=user Wallet RPC username (currently: {cfg.monero_wallet_rpc_user!r})
-P, --wallet-rpc-password=pass Wallet RPC password (currently: [scrubbed]) -P, --wallet-rpc-password=pass Wallet RPC password (currently: [scrubbed])
""", """,
'notes': """ 'notes': '{n_xw}'
{xmrwallet_help}
"""
}, },
'code': { 'code': {
'options': lambda cfg, help_notes, s: s.format( 'options': lambda cfg, help_notes, s: s.format(
@ -101,7 +98,7 @@ opts_data = {
tp = fmt_dict(xmrwallet.tx_priorities, fmt='equal_compact') tp = fmt_dict(xmrwallet.tx_priorities, fmt='equal_compact')
), ),
'notes': lambda help_mod, s: s.format( 'notes': lambda help_mod, s: s.format(
xmrwallet_help = help_mod('xmrwallet') n_xw = help_mod('xmrwallet')
) )
} }
} }