From f112760a74629c6958eb4bf5e8510d322573e332 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Wed, 25 Mar 2026 09:35:09 +0000 Subject: [PATCH] rename commands submodule to subcommands. add Maprestart.with_configure() --- src/q3rcon_cli/cli.py | 24 +------------------ .../{commands => subcommands}/__init__.py | 22 ++++++++--------- .../{commands => subcommands}/fastrestart.py | 0 .../{commands => subcommands}/gametype.py | 2 +- .../{commands => subcommands}/hostname.py | 0 .../{commands => subcommands}/map.py | 0 .../{commands => subcommands}/mapname.py | 0 .../{commands => subcommands}/maprestart.py | 16 +++++++------ .../{commands => subcommands}/maprotate.py | 0 .../{commands => subcommands}/plugins.py | 0 .../{commands => subcommands}/status.py | 0 11 files changed, 22 insertions(+), 42 deletions(-) rename src/q3rcon_cli/{commands => subcommands}/__init__.py (63%) rename src/q3rcon_cli/{commands => subcommands}/fastrestart.py (100%) rename src/q3rcon_cli/{commands => subcommands}/gametype.py (94%) rename src/q3rcon_cli/{commands => subcommands}/hostname.py (100%) rename src/q3rcon_cli/{commands => subcommands}/map.py (100%) rename src/q3rcon_cli/{commands => subcommands}/mapname.py (100%) rename src/q3rcon_cli/{commands => subcommands}/maprestart.py (71%) rename src/q3rcon_cli/{commands => subcommands}/maprotate.py (100%) rename src/q3rcon_cli/{commands => subcommands}/plugins.py (100%) rename src/q3rcon_cli/{commands => subcommands}/status.py (100%) diff --git a/src/q3rcon_cli/cli.py b/src/q3rcon_cli/cli.py index 1c3ecc1..76ac6a0 100644 --- a/src/q3rcon_cli/cli.py +++ b/src/q3rcon_cli/cli.py @@ -6,29 +6,7 @@ from typing_extensions import override from . import config, console from .__about__ import __version__ -from .commands import ( - Fastrestart, - Gametype, - Hostname, - Map, - Mapname, - Maprestart, - Maprotate, - Plugins, - Status, -) - -Subcommands = ( - Fastrestart - | Gametype - | Hostname - | Map - | Mapname - | Maprestart - | Maprotate - | Plugins - | Status -) +from .subcommands import Status, Subcommands class Q3rconCli(Command): diff --git a/src/q3rcon_cli/commands/__init__.py b/src/q3rcon_cli/subcommands/__init__.py similarity index 63% rename from src/q3rcon_cli/commands/__init__.py rename to src/q3rcon_cli/subcommands/__init__.py index 7f02e38..27f0cd6 100644 --- a/src/q3rcon_cli/commands/__init__.py +++ b/src/q3rcon_cli/subcommands/__init__.py @@ -8,14 +8,14 @@ from .maprotate import Maprotate from .plugins import Plugins from .status import Status -__all__ = [ - 'Status', - 'Mapname', - 'Maprotate', - 'Fastrestart', - 'Gametype', - 'Hostname', - 'Map', - 'Plugins', - 'Maprestart', -] +Subcommands = ( + Fastrestart + | Gametype + | Hostname + | Map + | Mapname + | Maprestart + | Maprotate + | Plugins + | Status +) diff --git a/src/q3rcon_cli/commands/fastrestart.py b/src/q3rcon_cli/subcommands/fastrestart.py similarity index 100% rename from src/q3rcon_cli/commands/fastrestart.py rename to src/q3rcon_cli/subcommands/fastrestart.py diff --git a/src/q3rcon_cli/commands/gametype.py b/src/q3rcon_cli/subcommands/gametype.py similarity index 94% rename from src/q3rcon_cli/commands/gametype.py rename to src/q3rcon_cli/subcommands/gametype.py index 1bb6009..3ad00ff 100644 --- a/src/q3rcon_cli/commands/gametype.py +++ b/src/q3rcon_cli/subcommands/gametype.py @@ -37,7 +37,7 @@ class Gametype(Command): await client.send_command(f'g_gametype {self.new_gametype}') if self.force: - await Maprestart(self.host, self.port, self.password).configure_and_run() + await Maprestart.with_configure(self.host, self.port, self.password).run() console.out.print( f'Gametype changed successfully to {self.new_gametype}.', style='green' diff --git a/src/q3rcon_cli/commands/hostname.py b/src/q3rcon_cli/subcommands/hostname.py similarity index 100% rename from src/q3rcon_cli/commands/hostname.py rename to src/q3rcon_cli/subcommands/hostname.py diff --git a/src/q3rcon_cli/commands/map.py b/src/q3rcon_cli/subcommands/map.py similarity index 100% rename from src/q3rcon_cli/commands/map.py rename to src/q3rcon_cli/subcommands/map.py diff --git a/src/q3rcon_cli/commands/mapname.py b/src/q3rcon_cli/subcommands/mapname.py similarity index 100% rename from src/q3rcon_cli/commands/mapname.py rename to src/q3rcon_cli/subcommands/mapname.py diff --git a/src/q3rcon_cli/commands/maprestart.py b/src/q3rcon_cli/subcommands/maprestart.py similarity index 71% rename from src/q3rcon_cli/commands/maprestart.py rename to src/q3rcon_cli/subcommands/maprestart.py index b85e456..207f141 100644 --- a/src/q3rcon_cli/commands/maprestart.py +++ b/src/q3rcon_cli/subcommands/maprestart.py @@ -12,19 +12,21 @@ class Maprestart(Command): port: int = arg(inherited=True) password: str = arg(inherited=True) - async def configure_and_run(self): + @classmethod + def with_configure(cls, host, port, password): """Configures the command with the appropriate configuration and runs it. - This method is used if we invoke the maprestart command from another command (e.g. gametype), + This classmethod is used if we invoke the maprestart command from another command (e.g. gametype), since the pre_run_hook is not called in that case. """ + instance = cls(host, port, password) ( - self.timeout, - self.fragment_read_timeout, - self.interpret, - ) = config.get(self.prog().split()[0].lower()) - await self.run() + instance.timeout, + instance.fragment_read_timeout, + instance.interpret, + ) = config.get(instance.prog().split()[0].lower()) + return instance @override async def run(self): diff --git a/src/q3rcon_cli/commands/maprotate.py b/src/q3rcon_cli/subcommands/maprotate.py similarity index 100% rename from src/q3rcon_cli/commands/maprotate.py rename to src/q3rcon_cli/subcommands/maprotate.py diff --git a/src/q3rcon_cli/commands/plugins.py b/src/q3rcon_cli/subcommands/plugins.py similarity index 100% rename from src/q3rcon_cli/commands/plugins.py rename to src/q3rcon_cli/subcommands/plugins.py diff --git a/src/q3rcon_cli/commands/status.py b/src/q3rcon_cli/subcommands/status.py similarity index 100% rename from src/q3rcon_cli/commands/status.py rename to src/q3rcon_cli/subcommands/status.py