From 6b7d4a5eba959686895bbf6b5d789acaf12c1df3 Mon Sep 17 00:00:00 2001 From: yrriban Date: Sat, 6 Sep 2025 14:04:46 -0400 Subject: [PATCH] Break out separate ls subcommands to avoid passing --wad. --- dcc/ls.py | 45 ++++++++++++++++++++++++++++----------------- dcc/main.py | 2 ++ 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/dcc/ls.py b/dcc/ls.py index 597a31a..b7fb0ce 100644 --- a/dcc/ls.py +++ b/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" + ) diff --git a/dcc/main.py b/dcc/main.py index de01819..7fb436b 100644 --- a/dcc/main.py +++ b/dcc/main.py @@ -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, -- 2.34.1