cmds.distro.CmdXxx: Rename to cmds.pkg.CmdXxx

With the exception of the "info" subcommand, nearly all of distro's subcommands deal with package managing, so push them into their own command category.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-04-24 11:04:22 +02:00
commit 5830984bfc
Signed by: Jan Lindemann
GPG key ID: 3750640C9E25DD61
17 changed files with 65 additions and 41 deletions

View file

@ -120,7 +120,7 @@ ifeq ($(TIME),)
endif endif
JW_PKG_PY_PROJECTS = $(JW_PKG_PY) projects JW_PKG_PY_PROJECTS = $(JW_PKG_PY) projects
JW_PKG_PY_BUILD = $(JW_PKG_PY_PROJECTS) build $(JW_PKG_PY_EXTRA_BUILD_OPTS) JW_PKG_PY_BUILD = $(JW_PKG_PY_PROJECTS) build $(JW_PKG_PY_EXTRA_BUILD_OPTS)
PKG_MANAGER ?= $(TIME) $(JW_PKG_PY) --interactive=$(INTERACTIVE) distro PKG_MANAGER ?= $(TIME) $(JW_PKG_PY) --interactive=$(INTERACTIVE) pkg
ifneq ($(origin PROJECTS_DIR_REMOTE_BASE),undefined) ifneq ($(origin PROJECTS_DIR_REMOTE_BASE),undefined)
PGIT_SH += --remote-base $(PROJECTS_DIR_REMOTE_BASE) PGIT_SH += --remote-base $(PROJECTS_DIR_REMOTE_BASE)

View file

@ -22,7 +22,7 @@ GIT_MAIN_BRANCH ?= master
OPT_JANWARE_PROJECT ?= -j OPT_JANWARE_PROJECT ?= -j
INTERACTIVE ?= auto INTERACTIVE ?= auto
PKG_MANAGER ?= $(JW_PKG_PY) --interactive=$(INTERACTIVE) distro PKG_MANAGER ?= $(JW_PKG_PY) --interactive=$(INTERACTIVE) pkg
ifeq ($(OPT_JANWARE_PROJECT),-j) ifeq ($(OPT_JANWARE_PROJECT),-j)
REMOTE_GIT_FLAVOUR ?= proj REMOTE_GIT_FLAVOUR ?= proj

View file

@ -8,7 +8,7 @@ from .Cmd import Cmd as CmdBase
class CmdDistro(CmdBase): # export class CmdDistro(CmdBase): # export
def __init__(self, parent: App) -> None: def __init__(self, parent: App) -> None:
super().__init__(parent, 'distro', help="System package manager wrapper") super().__init__(parent, 'distro', help="Miscellaneous platform-related comamnds")
self._add_subcommands() self._add_subcommands()
def add_arguments(self, p: ArgumentParser) -> None: def add_arguments(self, p: ArgumentParser) -> None:

View file

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
from argparse import ArgumentParser
from ..App import App
from .Cmd import Cmd as CmdBase
class CmdPkg(CmdBase): # export
def __init__(self, parent: App) -> None:
super().__init__(parent, 'pkg', help="System package manager wrapper")
self._add_subcommands()
def add_arguments(self, p: ArgumentParser) -> None:
super().add_arguments(p)

View file

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
from argparse import Namespace, ArgumentParser
from .Cmd import Cmd
from ..CmdDistro import CmdDistro
class CmdPkg(Cmd): # export
def __init__(self, parent: CmdDistro) -> None:
super().__init__(parent, 'pkg', help="Show package information")
self._add_subcommands()
def add_arguments(self, parser: ArgumentParser) -> None:
super().add_arguments(parser)
async def _run(self, args: Namespace) -> None:
return await super()._run(args)

View file

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from ...lib.Distro import Distro
from ..CmdPkg import CmdPkg
from ..Cmd import Cmd as Base
class Cmd(Base): # export
def __init__(self, parent: CmdPkg, name: str, help: str) -> None:
super().__init__(parent, name, help)

View file

@ -3,11 +3,11 @@
from argparse import Namespace, ArgumentParser from argparse import Namespace, ArgumentParser
from .Cmd import Cmd from .Cmd import Cmd
from ..CmdDistro import CmdDistro from ..CmdPkg import CmdPkg
class CmdDelete(Cmd): # export class CmdDelete(Cmd): # export
def __init__(self, parent: CmdDistro) -> None: def __init__(self, parent: CmdPkg) -> None:
super().__init__(parent, 'delete', help="Delete packages by name") super().__init__(parent, 'delete', help="Delete packages by name")
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:

View file

@ -3,11 +3,11 @@
from argparse import Namespace, ArgumentParser from argparse import Namespace, ArgumentParser
from .Cmd import Cmd from .Cmd import Cmd
from ..CmdDistro import CmdDistro from ..CmdPkg import CmdPkg
class CmdDup(Cmd): # export class CmdDup(Cmd): # export
def __init__(self, parent: CmdDistro) -> None: def __init__(self, parent: CmdPkg) -> None:
super().__init__(parent, 'dup', help="Upgrade distribution") super().__init__(parent, 'dup', help="Upgrade distribution")
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:

View file

@ -3,11 +3,11 @@
from argparse import Namespace, ArgumentParser from argparse import Namespace, ArgumentParser
from .Cmd import Cmd from .Cmd import Cmd
from ..CmdDistro import CmdDistro from ..CmdPkg import CmdPkg
class CmdInstall(Cmd): # export class CmdInstall(Cmd): # export
def __init__(self, parent: CmdDistro) -> None: def __init__(self, parent: CmdPkg) -> None:
super().__init__(parent, 'install', help="Install the distribution's notion of available packages") super().__init__(parent, 'install', help="Install the distribution's notion of available packages")
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:

View file

@ -2,10 +2,10 @@
from argparse import Namespace, ArgumentParser from argparse import Namespace, ArgumentParser
from .Cmd import Cmd from .NamedPkgsCmd import NamedPkgsCmd as Base
from ..CmdPkg import CmdPkg from ..CmdPkg import CmdPkg
class CmdLs(Cmd): # export class CmdLs(Base): # export
def __init__(self, parent: CmdPkg) -> None: def __init__(self, parent: CmdPkg) -> None:
super().__init__(parent, 'ls', help="List package contents") super().__init__(parent, 'ls', help="List package contents")

View file

@ -2,10 +2,10 @@
from argparse import Namespace, ArgumentParser from argparse import Namespace, ArgumentParser
from .Cmd import Cmd from .NamedPkgsCmd import NamedPkgsCmd as Base
from ..CmdPkg import CmdPkg from ..CmdPkg import CmdPkg
class CmdMeta(Cmd): # export class CmdMeta(Base): # export
def __init__(self, parent: CmdPkg) -> None: def __init__(self, parent: CmdPkg) -> None:
super().__init__(parent, 'meta', help="List package metadata") super().__init__(parent, 'meta', help="List package metadata")

View file

@ -3,11 +3,11 @@
from argparse import Namespace, ArgumentParser from argparse import Namespace, ArgumentParser
from .Cmd import Cmd from .Cmd import Cmd
from ..CmdDistro import CmdDistro from ..CmdPkg import CmdPkg
class CmdRebootRequired(Cmd): # export class CmdRebootRequired(Cmd): # export
def __init__(self, parent: CmdDistro) -> None: def __init__(self, parent: CmdPkg) -> None:
super().__init__(parent, 'reboot-required', help="Check whether the machine needs rebooting") super().__init__(parent, 'reboot-required', help="Check whether the machine needs rebooting")
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:

View file

@ -3,11 +3,11 @@
from argparse import Namespace, ArgumentParser from argparse import Namespace, ArgumentParser
from .Cmd import Cmd from .Cmd import Cmd
from ..CmdDistro import CmdDistro from ..CmdPkg import CmdPkg
class CmdRefresh(Cmd): # export class CmdRefresh(Cmd): # export
def __init__(self, parent: CmdDistro) -> None: def __init__(self, parent: CmdPkg) -> None:
super().__init__(parent, 'refresh', help="Refresh the distribution's notion of available packages") super().__init__(parent, 'refresh', help="Refresh the distribution's notion of available packages")
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:

View file

@ -5,12 +5,12 @@ import re
from ...lib.Package import Package from ...lib.Package import Package
from ...lib.PackageFilter import PackageFilterString from ...lib.PackageFilter import PackageFilterString
from ..CmdDistro import CmdDistro from ..CmdPkg import CmdPkg
from .Cmd import Cmd from .Cmd import Cmd
class CmdSelect(Cmd): # export class CmdSelect(Cmd): # export
def __init__(self, parent: CmdDistro) -> None: def __init__(self, parent: CmdPkg) -> None:
super().__init__(parent, 'select', help="Select packages by filter") super().__init__(parent, 'select', help="Select packages by filter")
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:

View file

@ -1,5 +1,5 @@
TOPDIR = ../../../../../../.. TOPDIR = ../../../../../..
#PY_UPDATE_INIT_PY = false PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk include $(JWBDIR)/make/py-mod.mk

View file

@ -2,10 +2,10 @@
from argparse import Namespace, ArgumentParser from argparse import Namespace, ArgumentParser
from ..Cmd import Cmd as Base from .Cmd import Cmd as Base
from ..CmdPkg import CmdPkg as Parent from ..CmdPkg import CmdPkg as Parent
class Cmd(Base): # export class NamedPkgsCmd(Base): # export
def __init__(self, parent: Parent, name: str, help: str) -> None: def __init__(self, parent: Parent, name: str, help: str) -> None:
super().__init__(parent, name, help) super().__init__(parent, name, help)

View file

@ -0,0 +1,11 @@
import importlib, pkgutil
__all__ = []
for finder, module_name, ispkg in pkgutil.iter_modules(__path__):
if not module_name.startswith("Cmd"):
continue
module = importlib.import_module(f".{module_name}", __name__)
cls = getattr(module, module_name)
globals()[module_name] = cls
__all__.append(module_name)