Break out separate ls subcommands to avoid passing --wad.
This commit is contained in:
parent
8dcbb67cae
commit
6b7d4a5eba
2 changed files with 30 additions and 17 deletions
45
dcc/ls.py
45
dcc/ls.py
|
@ -6,7 +6,6 @@ class List(dcc.config.ListerBase):
|
|||
def get_parser(self, prog_name):
|
||||
parser = super().get_parser(prog_name)
|
||||
parser.add_argument("target")
|
||||
parser.add_argument("--wad")
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
|
@ -24,21 +23,33 @@ class List(dcc.config.ListerBase):
|
|||
os.scandir(self.iwads) if x.is_file()
|
||||
)
|
||||
)
|
||||
case "demos":
|
||||
return (
|
||||
("demos",), sorted(
|
||||
(x.name,) for x in
|
||||
os.scandir(self.demos.joinpath(parsed_args.wad))
|
||||
if x.name.endswith(".lmp")
|
||||
)
|
||||
)
|
||||
case "videos":
|
||||
return (
|
||||
("videos",), sorted(
|
||||
(x.name,) for x in
|
||||
os.scandir(self.fabricate.joinpath(parsed_args.wad))
|
||||
if x.name.endswith(".mp4")
|
||||
)
|
||||
)
|
||||
case _:
|
||||
raise Exception(f"unknown target {parsed_args.target}")
|
||||
|
||||
|
||||
class WadList(dcc.config.ListerBase):
|
||||
def get_parser(self, prog_name):
|
||||
parser = super().get_parser(prog_name)
|
||||
parser.add_argument("wad")
|
||||
return parser
|
||||
|
||||
def _get_results(self, name, base, wad, ext):
|
||||
return (
|
||||
(name,), sorted(
|
||||
(x.name,) for x in
|
||||
os.scandir(base.joinpath(wad))
|
||||
if x.name.endswith(ext)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ListDemos(WadList):
|
||||
def take_action(self, parsed_args):
|
||||
return self._get_results("demos", self.demos, parsed_args.wad, ".lmp")
|
||||
|
||||
|
||||
class ListVideos(WadList):
|
||||
def take_action(self, parsed_args):
|
||||
return self._get_results(
|
||||
"videos", self.fabricate, parsed_args.wad, ".mp4"
|
||||
)
|
||||
|
|
|
@ -33,6 +33,8 @@ class DCC(App):
|
|||
"fabricate": dcc.fabricate.Fabricate,
|
||||
"fetch": dcc.fetch.Fetch,
|
||||
"ls": dcc.ls.List,
|
||||
"ls demos": dcc.ls.ListDemos,
|
||||
"ls videos": dcc.ls.ListVideos,
|
||||
"pb": dcc.pb.PB,
|
||||
"play": dcc.play.Play,
|
||||
"put": dcc.put.Put,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue