cmdtest.list_cmds(): cleanup, move to CmdGroupMgr

This commit is contained in:
The MMGen Project 2025-10-03 10:34:04 +00:00
commit e9aeb9d8cd
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
2 changed files with 24 additions and 31 deletions

View file

@ -239,34 +239,6 @@ if cfg.skipping_deps:
from test.cmdtest_d.include.cfg import cfgs
def list_cmds():
def gen_output():
from test.cmdtest_d.include.group_mgr import CmdGroupMgr
gm = CmdGroupMgr(cfg)
cw, d = 0, []
yield green('AVAILABLE COMMANDS:')
for gname in gm.cmd_groups:
tg = gm.gm_init_group(cfg, None, gname, None, None)
gdesc = tg.__doc__.strip() if tg.__doc__ else type(tg).__name__
d.append((gname, gdesc, gm.cmd_list, gm.dpy_data))
cw = max(max(len(k) for k in gm.dpy_data), cw)
for gname, gdesc, cmd_list, dpy_data in d:
yield '\n'+green(f'{gname!r} - {gdesc}:')
for cmd in cmd_list:
data = dpy_data[cmd]
yield ' {:{w}} - {}'.format(
cmd,
(data if isinstance(data, str) else data[1]),
w = cw)
from mmgen.ui import do_pager
do_pager('\n'.join(gen_output()))
def create_tmp_dirs(shm_dir):
if sys.platform in ('win32', 'darwin'):
for cfg in sorted(cfgs):
@ -297,13 +269,15 @@ if __name__ == '__main__':
if not cfg.skipping_deps: # do this before list cmds exit, so we stay in sync with shm_dir
create_tmp_dirs(shm_dir)
if cfg.list_cmds:
from test.cmdtest_d.include.group_mgr import CmdGroupMgr
CmdGroupMgr(cfg).list_cmds()
sys.exit(0)
if cfg.list_cmd_groups:
from test.cmdtest_d.include.group_mgr import CmdGroupMgr
CmdGroupMgr(cfg).list_cmd_groups()
sys.exit(0)
elif cfg.list_cmds:
list_cmds()
sys.exit(0)
if cfg.pause:
set_restore_term_at_exit()

View file

@ -154,6 +154,25 @@ class CmdGroupMgr:
def get_cls_by_gname(self, gname):
return self.load_mod(gname, self.cmd_groups[gname].params.get('modname'))
def list_cmds(self):
def gen_output():
yield green('AVAILABLE COMMANDS:')
for gname in self.cmd_groups:
tg = self.gm_init_group(self.cfg, None, gname, None, None)
gdesc = tg.__doc__.strip() if tg.__doc__ else type(tg).__name__
yield '\n' + green(f'{gname!r} - {gdesc}:')
name_w = max(len(cmd) for cmd in self.cmd_list)
for cmd in self.cmd_list:
data = self.dpy_data[cmd]
yield ' {a:{w}} - {b}'.format(
a = cmd,
b = data if isinstance(data, str) else data.desc,
w = name_w)
from mmgen.ui import do_pager
do_pager('\n'.join(gen_output()))
def list_cmd_groups(self):
if self.cfg.list_current_cmd_groups: