opts.py (global opts), help.__init__: minor fixes & cleanups
This commit is contained in:
parent
941bbdc4b5
commit
890ee4d149
2 changed files with 29 additions and 30 deletions
|
|
@ -62,7 +62,7 @@ def usage(cfg):
|
|||
|
||||
class Help:
|
||||
|
||||
def make(self, cfg, opts, proto):
|
||||
def make(self, cfg, opts):
|
||||
|
||||
def gen_arg_tuple(func, text):
|
||||
|
||||
|
|
@ -86,27 +86,28 @@ class Help:
|
|||
yield d[arg] if arg in d else text
|
||||
|
||||
def gen_output():
|
||||
yield ' {} {}'.format(gc.prog_name.upper() + ':', text['desc'].strip())
|
||||
yield ' {} {}'.format(gc.prog_name.upper() + ':', opts.opts_data['text']['desc'].strip())
|
||||
yield make_usage_str(cfg, caller='help')
|
||||
yield help_type.upper().replace('_', ' ') + ':'
|
||||
yield self.help_type.upper().replace('_', ' ') + ':'
|
||||
|
||||
# process code for options
|
||||
opts_text = nl.join(self.gen_text(opts))
|
||||
if help_type in code:
|
||||
yield code[help_type](*tuple(gen_arg_tuple(code[help_type], opts_text)))
|
||||
if 'options' in code:
|
||||
yield code['options'](*tuple(gen_arg_tuple(code['options'], opts_text)))
|
||||
else:
|
||||
yield opts_text
|
||||
|
||||
# process code for notes
|
||||
if help_type == 'options' and 'notes' in text:
|
||||
if 'notes' in text:
|
||||
if 'notes' in code:
|
||||
yield from code['notes'](*tuple(gen_arg_tuple(code['notes'], text['notes']))).splitlines()
|
||||
else:
|
||||
yield from text['notes'].splitlines()
|
||||
|
||||
text = opts.opts_data['text']
|
||||
code = opts.opts_data['code']
|
||||
help_type = self.help_type
|
||||
from ..protocol import init_proto_from_cfg
|
||||
proto = init_proto_from_cfg(cfg, need_amt=True)
|
||||
text = getattr(opts, self.data_desc)['text']
|
||||
code = getattr(opts, self.data_desc)['code']
|
||||
nl = '\n '
|
||||
|
||||
return nl.join(gen_output()) + '\n'
|
||||
|
|
@ -114,6 +115,7 @@ class Help:
|
|||
class CmdHelp(Help):
|
||||
|
||||
help_type = 'options'
|
||||
data_desc = 'opts_data'
|
||||
|
||||
def gen_text(self, opts):
|
||||
opt_filter = opts.opt_filter
|
||||
|
|
@ -137,10 +139,12 @@ class CmdHelp(Help):
|
|||
class GlobalHelp(Help):
|
||||
|
||||
help_type = 'global_options'
|
||||
data_desc = 'global_opts_data'
|
||||
|
||||
def gen_text(self, opts):
|
||||
from ..opts import global_opts_pat
|
||||
for line in opts.global_opts_data['text'][1:-2].splitlines():
|
||||
skipping = False
|
||||
for line in opts.global_opts_data['text']['options'][1:-3].splitlines():
|
||||
if m := global_opts_pat.match(line):
|
||||
if m[1] in opts.global_opts_filter.coin and m[2] in opts.global_opts_filter.cmd:
|
||||
yield ' --{} {}'.format(m[3], m[5])
|
||||
|
|
@ -152,18 +156,9 @@ class GlobalHelp(Help):
|
|||
|
||||
def print_help(cfg, opts):
|
||||
|
||||
from ..protocol import init_proto_from_cfg
|
||||
proto = init_proto_from_cfg(cfg, need_amt=True)
|
||||
|
||||
if not 'code' in opts.opts_data:
|
||||
opts.opts_data['code'] = {}
|
||||
|
||||
if cfg.help:
|
||||
cls = CmdHelp
|
||||
else:
|
||||
opts.opts_data['code']['global_options'] = opts.global_opts_data['code']
|
||||
cls = GlobalHelp
|
||||
|
||||
from ..ui import do_pager
|
||||
do_pager(cls().make(cfg, opts, proto))
|
||||
do_pager((CmdHelp if cfg.help else GlobalHelp)().make(cfg, opts))
|
||||
sys.exit(0)
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ def parse_opts(opts_data, opt_filter, global_opts_data, global_opts_filter):
|
|||
yield (m[2], ret)
|
||||
|
||||
def parse_global_opts_text():
|
||||
for line in global_opts_data['text'].splitlines():
|
||||
for line in global_opts_data['text']['options'].splitlines():
|
||||
m = global_opts_pat.match(line)
|
||||
if m and m[1] in global_opts_filter.coin and m[2] in global_opts_filter.cmd:
|
||||
yield (m[3], opt_tuple(m[3].replace('-', '_'), m[4] == '='))
|
||||
|
|
@ -249,7 +249,8 @@ class UserOpts(Opts):
|
|||
|
||||
global_opts_data = {
|
||||
# coin code : cmd code : opt : opt param : text
|
||||
'text': """
|
||||
'text': {
|
||||
'options': """
|
||||
-- --accept-defaults Accept defaults at all prompts
|
||||
hp --cashaddr=0|1 Display addresses in cashaddr format (default: 1)
|
||||
-p --coin=c Choose coin unit. Default: BTC. Current choice: {cu_dfl}
|
||||
|
|
@ -266,10 +267,10 @@ class UserOpts(Opts):
|
|||
rr --ignore-daemon-version Ignore coin daemon version check
|
||||
rr --http-timeout=t Set HTTP timeout in seconds for JSON-RPC connections
|
||||
-- --no-license Suppress the GPL license prompt
|
||||
rr --rpc-host=HOST Communicate with coin daemon running on host HOST
|
||||
Rr --rpc-host=HOST Communicate with coin daemon running on host HOST
|
||||
rr --rpc-port=PORT Communicate with coin daemon listening on port PORT
|
||||
rr --rpc-user=USER Authenticate to coin daemon using username USER
|
||||
rr --rpc-password=PASS Authenticate to coin daemon using password PASS
|
||||
br --rpc-user=USER Authenticate to coin daemon using username USER
|
||||
br --rpc-password=PASS Authenticate to coin daemon using password PASS
|
||||
Rr --rpc-backend=backend Use backend 'backend' for JSON-RPC communications
|
||||
Rr --aiohttp-rpc-queue-len=N Use N simultaneous RPC connections with aiohttp
|
||||
-p --regtest=0|1 Disable or enable regtest mode
|
||||
|
|
@ -282,11 +283,14 @@ class UserOpts(Opts):
|
|||
b- --bob Specify user ‘Bob’ in MMGen regtest mode
|
||||
b- --alice Specify user ‘Alice’ in MMGen regtest mode
|
||||
b- --carol Specify user ‘Carol’ in MMGen regtest mode
|
||||
""",
|
||||
'code': lambda proto, help_notes, s: s.format(
|
||||
pnm = gc.proj_name,
|
||||
cu_dfl = proto.coin,
|
||||
tw_name = help_notes('dfl_twname'))
|
||||
""",
|
||||
},
|
||||
'code': {
|
||||
'options': lambda proto, help_notes, s: s.format(
|
||||
pnm = gc.proj_name,
|
||||
cu_dfl = proto.coin,
|
||||
tw_name = help_notes('dfl_twname')),
|
||||
}
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue