opts.py: print help screen only after full initialization of opts
This commit is contained in:
parent
7311b2d1cf
commit
015afee89f
3 changed files with 18 additions and 20 deletions
|
|
@ -20,7 +20,7 @@
|
|||
help: help notes for MMGen suite commands
|
||||
"""
|
||||
|
||||
def help_notes_func(proto,po,k):
|
||||
def help_notes_func(proto,opt,k):
|
||||
from .globalvars import g
|
||||
|
||||
def fee_spec_letters(use_quotes=False):
|
||||
|
|
@ -91,7 +91,7 @@ def help_notes_func(proto,po,k):
|
|||
from .keygen import get_backends
|
||||
from .addr import MMGenAddrType
|
||||
backends = get_backends(
|
||||
MMGenAddrType(proto,po.user_opts.get('type') or proto.dfl_mmtype).pubkey_type
|
||||
MMGenAddrType(proto,opt.type or proto.dfl_mmtype).pubkey_type
|
||||
)
|
||||
return ' '.join( f'{n}:{k}{" [default]" if n==1 else ""}' for n,k in enumerate(backends,1) )
|
||||
|
||||
|
|
|
|||
|
|
@ -55,14 +55,14 @@ def delete_data(opts_data):
|
|||
del mmgen.share.Opts.parse_opts
|
||||
|
||||
def post_init():
|
||||
global po_save,opts_data_save,opt_filter_save
|
||||
if po_save.user_opts.get('help') or po_save.user_opts.get('longhelp'):
|
||||
print_help(po_save,opts_data_save,opt_filter_save)
|
||||
global opts_data_save,opt_filter_save
|
||||
if opt.help or opt.longhelp:
|
||||
print_help(opt,opts_data_save,opt_filter_save)
|
||||
else:
|
||||
delete_data(opts_data_save)
|
||||
del po_save,opts_data_save,opt_filter_save
|
||||
del opts_data_save,opt_filter_save
|
||||
|
||||
def print_help(po,opts_data,opt_filter):
|
||||
def print_help(opt,opts_data,opt_filter):
|
||||
if not 'code' in opts_data:
|
||||
opts_data['code'] = {}
|
||||
|
||||
|
|
@ -82,7 +82,7 @@ def print_help(po,opts_data,opt_filter):
|
|||
do_pager(
|
||||
mmgen.share.Opts.make_help(
|
||||
proto,
|
||||
po,
|
||||
opt,
|
||||
opts_data,
|
||||
opt_filter ))
|
||||
|
||||
|
|
@ -408,11 +408,6 @@ def init(
|
|||
|
||||
# === end global var initialization === #
|
||||
|
||||
# print help screen only after global vars are initialized:
|
||||
if getattr(opt,'help',None) or getattr(opt,'longhelp',None):
|
||||
if not do_post_init:
|
||||
print_help(po,opts_data,opt_filter) # exits
|
||||
|
||||
if need_proto:
|
||||
from .protocol import warn_trustlevel
|
||||
warn_trustlevel(g.coin)
|
||||
|
|
@ -441,9 +436,13 @@ def init(
|
|||
g.lock()
|
||||
opt.lock()
|
||||
|
||||
# print help screen only after globals and opts initialized and locked:
|
||||
if opt.help or opt.longhelp:
|
||||
if not do_post_init:
|
||||
print_help(opt,opts_data,opt_filter) # exits
|
||||
|
||||
if do_post_init:
|
||||
global po_save,opts_data_save,opt_filter_save
|
||||
po_save = po
|
||||
global opts_data_save,opt_filter_save
|
||||
opts_data_save = opts_data
|
||||
opt_filter_save = opt_filter
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ def print_help(*args):
|
|||
print(make_help(*args))
|
||||
sys.exit(0)
|
||||
|
||||
def make_help(proto,po,opts_data,opt_filter):
|
||||
def make_help(proto,opt,opts_data,opt_filter):
|
||||
|
||||
def parse_lines(text):
|
||||
filtered = False
|
||||
|
|
@ -62,7 +62,7 @@ def make_help(proto,po,opts_data,opt_filter):
|
|||
elif not filtered:
|
||||
yield line
|
||||
|
||||
opts_type,fs = ('options','{:<3} --{} {}') if 'help' in po.user_opts else ('long_options','{} --{} {}')
|
||||
opts_type,fs = ('options','{:<3} --{} {}') if opt.help else ('long_options','{} --{} {}')
|
||||
t = opts_data['text']
|
||||
c = opts_data['code']
|
||||
nl = '\n '
|
||||
|
|
@ -71,7 +71,7 @@ def make_help(proto,po,opts_data,opt_filter):
|
|||
|
||||
from mmgen.help import help_notes_func
|
||||
def help_notes(k):
|
||||
return help_notes_func(proto,po,k)
|
||||
return help_notes_func(proto,opt,k)
|
||||
|
||||
def gen_arg_tuple(func,text):
|
||||
d = {'proto': proto,'help_notes':help_notes}
|
||||
|
|
@ -166,8 +166,7 @@ def parse_opts(opts_data,opt_filter=None,parse_only=False):
|
|||
|
||||
uopts,uargs = process_uopts(opts_data,short_opts,long_opts)
|
||||
|
||||
po = namedtuple('parsed_cmd_opts',['user_opts','cmd_args','opts','skipped_opts'])
|
||||
return po(
|
||||
return namedtuple('parsed_cmd_opts',['user_opts','cmd_args','opts','skipped_opts'])(
|
||||
uopts, # dict
|
||||
uargs, # list, callers can pop
|
||||
tuple(o.replace('-','_').rstrip('=') for o in long_opts),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue