jw.build.App: Unroll run_from_cmd_module()

run_from_cmd_module() is a helper function used to allow command
selection alongside the legacy and now obsolete method. Unrolling it
is a step towards adding proper argparse subparsers, so do that.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2025-11-18 15:42:16 +01:00
commit a863bb9747

View file

@ -405,18 +405,6 @@ class App(object):
unvisited.remove(module)
temp.remove(module)
def run_from_cmd_module(self, name: str, args_) -> None:
import importlib
name = name.replace('-', '_')
cc_name = 'Cmd' + ''.join(x.capitalize() for x in name.lower().split("_"))
module = importlib.import_module('jw.build.cmds.' + cc_name)
cmd = getattr(module, cc_name)()
cmd.app = self
parser = argparse.ArgumentParser(description=name)
cmd.add_arguments(parser)
args = parser.parse_args(args_)
return cmd.run(args)
# -------------------------------------------------------------------- here we go
def run(self):
@ -461,4 +449,13 @@ class App(object):
if not self.top_name:
self.top_name = re.sub('-[0-9.-]*$', '', os.path.basename(os.path.realpath(self.topdir)))
return self.run_from_cmd_module(args.cmd, sys.argv[(len(self.global_args) + 1)::])
import importlib
cmd_name = args.cmd.replace('-', '_')
cc_cmd_name = 'Cmd' + ''.join(x.capitalize() for x in cmd_name.lower().split("_"))
module = importlib.import_module('jw.build.cmds.' + cc_cmd_name)
cmd = getattr(module, cc_cmd_name)()
cmd.app = self
subparser = argparse.ArgumentParser(description=cmd_name)
cmd.add_arguments(subparser)
args = subparser.parse_args(sys.argv[(len(self.global_args) + 1)::])
return cmd.run(args)