Make the implementation of add_common_args clearer.

Probably can't do better than this without messing around with the
method resolution order and other things I'd rather not touch.
This commit is contained in:
yrriban 2025-09-01 23:18:01 -04:00
parent 4cae5987db
commit 7317674e4c

View file

@ -61,17 +61,17 @@ class ConfigBase(object):
return self._doom.joinpath(self._dsda) return self._doom.joinpath(self._dsda)
def AddCommonArgs(parser): def get_parser_func(toc):
def add_common_args(self, prog_name):
parser = super(toc, self).get_parser(prog_name)
parser.add_argument( parser.add_argument(
"--doom", default=pathlib.Path.home().joinpath("doom")) "--doom", default=pathlib.Path.home().joinpath("doom"))
parser.add_argument("--config-name", default="config.toml") parser.add_argument("--config-name", default="config.toml")
return parser return parser
return add_common_args
class Base(cliff.command.Command, ConfigBase): class Base(cliff.command.Command, ConfigBase):
def get_parser(self, prog_name):
return AddCommonArgs(super().get_parser(prog_name))
def run(self, parsed_args): def run(self, parsed_args):
super().init_base(parsed_args) super().init_base(parsed_args)
super().finalize() super().finalize()
@ -79,12 +79,13 @@ class Base(cliff.command.Command, ConfigBase):
class ListerBase(cliff.lister.Lister, ConfigBase): class ListerBase(cliff.lister.Lister, ConfigBase):
def get_parser(self, prog_name):
return AddCommonArgs(super().get_parser(prog_name))
def run(self, parsed_args): def run(self, parsed_args):
super().init_base(parsed_args) super().init_base(parsed_args)
super().finalize() super().finalize()
self.formatter = self._formatter_plugins[parsed_args.formatter].obj self.formatter = self._formatter_plugins[parsed_args.formatter].obj
columns, data = self.take_action(parsed_args) columns, data = self.take_action(parsed_args)
return self.produce_output(parsed_args, columns, data) return self.produce_output(parsed_args, columns, data)
for toc in (Base, ListerBase):
toc.get_parser = get_parser_func(toc)