diff --git a/make/projects-dir.mk b/make/projects-dir.mk index 0c2fe00c..09b15a30 100644 --- a/make/projects-dir.mk +++ b/make/projects-dir.mk @@ -120,7 +120,7 @@ ifeq ($(TIME),) endif JW_PKG_PY_PROJECTS = $(JW_PKG_PY) projects 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) PGIT_SH += --remote-base $(PROJECTS_DIR_REMOTE_BASE) diff --git a/make/topdir.mk b/make/topdir.mk index 936dd577..f74e5e4d 100644 --- a/make/topdir.mk +++ b/make/topdir.mk @@ -22,7 +22,7 @@ GIT_MAIN_BRANCH ?= master OPT_JANWARE_PROJECT ?= -j INTERACTIVE ?= auto -PKG_MANAGER ?= $(JW_PKG_PY) --interactive=$(INTERACTIVE) distro +PKG_MANAGER ?= $(JW_PKG_PY) --interactive=$(INTERACTIVE) pkg ifeq ($(OPT_JANWARE_PROJECT),-j) REMOTE_GIT_FLAVOUR ?= proj diff --git a/src/python/jw/pkg/cmds/CmdDistro.py b/src/python/jw/pkg/cmds/CmdDistro.py index fe58cdc5..24769f3f 100644 --- a/src/python/jw/pkg/cmds/CmdDistro.py +++ b/src/python/jw/pkg/cmds/CmdDistro.py @@ -8,7 +8,7 @@ from .Cmd import Cmd as CmdBase class CmdDistro(CmdBase): # export 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() def add_arguments(self, p: ArgumentParser) -> None: diff --git a/src/python/jw/pkg/cmds/CmdPkg.py b/src/python/jw/pkg/cmds/CmdPkg.py new file mode 100644 index 00000000..a447d769 --- /dev/null +++ b/src/python/jw/pkg/cmds/CmdPkg.py @@ -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) diff --git a/src/python/jw/pkg/cmds/distro/CmdPkg.py b/src/python/jw/pkg/cmds/distro/CmdPkg.py deleted file mode 100644 index e102611c..00000000 --- a/src/python/jw/pkg/cmds/distro/CmdPkg.py +++ /dev/null @@ -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) diff --git a/src/python/jw/pkg/cmds/pkg/Cmd.py b/src/python/jw/pkg/cmds/pkg/Cmd.py new file mode 100644 index 00000000..ffc6cefd --- /dev/null +++ b/src/python/jw/pkg/cmds/pkg/Cmd.py @@ -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) diff --git a/src/python/jw/pkg/cmds/distro/CmdDelete.py b/src/python/jw/pkg/cmds/pkg/CmdDelete.py similarity index 85% rename from src/python/jw/pkg/cmds/distro/CmdDelete.py rename to src/python/jw/pkg/cmds/pkg/CmdDelete.py index 9f8d7658..41650031 100644 --- a/src/python/jw/pkg/cmds/distro/CmdDelete.py +++ b/src/python/jw/pkg/cmds/pkg/CmdDelete.py @@ -3,11 +3,11 @@ from argparse import Namespace, ArgumentParser from .Cmd import Cmd -from ..CmdDistro import CmdDistro +from ..CmdPkg import CmdPkg 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") def add_arguments(self, parser: ArgumentParser) -> None: diff --git a/src/python/jw/pkg/cmds/distro/CmdDup.py b/src/python/jw/pkg/cmds/pkg/CmdDup.py similarity index 87% rename from src/python/jw/pkg/cmds/distro/CmdDup.py rename to src/python/jw/pkg/cmds/pkg/CmdDup.py index af236ce4..4aed7e7f 100644 --- a/src/python/jw/pkg/cmds/distro/CmdDup.py +++ b/src/python/jw/pkg/cmds/pkg/CmdDup.py @@ -3,11 +3,11 @@ from argparse import Namespace, ArgumentParser from .Cmd import Cmd -from ..CmdDistro import CmdDistro +from ..CmdPkg import CmdPkg class CmdDup(Cmd): # export - def __init__(self, parent: CmdDistro) -> None: + def __init__(self, parent: CmdPkg) -> None: super().__init__(parent, 'dup', help="Upgrade distribution") def add_arguments(self, parser: ArgumentParser) -> None: diff --git a/src/python/jw/pkg/cmds/distro/CmdInstall.py b/src/python/jw/pkg/cmds/pkg/CmdInstall.py similarity index 91% rename from src/python/jw/pkg/cmds/distro/CmdInstall.py rename to src/python/jw/pkg/cmds/pkg/CmdInstall.py index 9ebcf9f3..f3f55201 100644 --- a/src/python/jw/pkg/cmds/distro/CmdInstall.py +++ b/src/python/jw/pkg/cmds/pkg/CmdInstall.py @@ -3,11 +3,11 @@ from argparse import Namespace, ArgumentParser from .Cmd import Cmd -from ..CmdDistro import CmdDistro +from ..CmdPkg import CmdPkg 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") def add_arguments(self, parser: ArgumentParser) -> None: diff --git a/src/python/jw/pkg/cmds/distro/pkg/CmdLs.py b/src/python/jw/pkg/cmds/pkg/CmdLs.py similarity index 86% rename from src/python/jw/pkg/cmds/distro/pkg/CmdLs.py rename to src/python/jw/pkg/cmds/pkg/CmdLs.py index bccb41c1..c301a5cd 100644 --- a/src/python/jw/pkg/cmds/distro/pkg/CmdLs.py +++ b/src/python/jw/pkg/cmds/pkg/CmdLs.py @@ -2,10 +2,10 @@ from argparse import Namespace, ArgumentParser -from .Cmd import Cmd +from .NamedPkgsCmd import NamedPkgsCmd as Base from ..CmdPkg import CmdPkg -class CmdLs(Cmd): # export +class CmdLs(Base): # export def __init__(self, parent: CmdPkg) -> None: super().__init__(parent, 'ls', help="List package contents") diff --git a/src/python/jw/pkg/cmds/distro/pkg/CmdMeta.py b/src/python/jw/pkg/cmds/pkg/CmdMeta.py similarity index 87% rename from src/python/jw/pkg/cmds/distro/pkg/CmdMeta.py rename to src/python/jw/pkg/cmds/pkg/CmdMeta.py index c2fdef22..5209eb56 100644 --- a/src/python/jw/pkg/cmds/distro/pkg/CmdMeta.py +++ b/src/python/jw/pkg/cmds/pkg/CmdMeta.py @@ -2,10 +2,10 @@ from argparse import Namespace, ArgumentParser -from .Cmd import Cmd +from .NamedPkgsCmd import NamedPkgsCmd as Base from ..CmdPkg import CmdPkg -class CmdMeta(Cmd): # export +class CmdMeta(Base): # export def __init__(self, parent: CmdPkg) -> None: super().__init__(parent, 'meta', help="List package metadata") diff --git a/src/python/jw/pkg/cmds/distro/CmdRebootRequired.py b/src/python/jw/pkg/cmds/pkg/CmdRebootRequired.py similarity index 83% rename from src/python/jw/pkg/cmds/distro/CmdRebootRequired.py rename to src/python/jw/pkg/cmds/pkg/CmdRebootRequired.py index c181f4ff..a74f8405 100644 --- a/src/python/jw/pkg/cmds/distro/CmdRebootRequired.py +++ b/src/python/jw/pkg/cmds/pkg/CmdRebootRequired.py @@ -3,11 +3,11 @@ from argparse import Namespace, ArgumentParser from .Cmd import Cmd -from ..CmdDistro import CmdDistro +from ..CmdPkg import CmdPkg 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") def add_arguments(self, parser: ArgumentParser) -> None: diff --git a/src/python/jw/pkg/cmds/distro/CmdRefresh.py b/src/python/jw/pkg/cmds/pkg/CmdRefresh.py similarity index 83% rename from src/python/jw/pkg/cmds/distro/CmdRefresh.py rename to src/python/jw/pkg/cmds/pkg/CmdRefresh.py index 51669df4..0e6c65a6 100644 --- a/src/python/jw/pkg/cmds/distro/CmdRefresh.py +++ b/src/python/jw/pkg/cmds/pkg/CmdRefresh.py @@ -3,11 +3,11 @@ from argparse import Namespace, ArgumentParser from .Cmd import Cmd -from ..CmdDistro import CmdDistro +from ..CmdPkg import CmdPkg 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") def add_arguments(self, parser: ArgumentParser) -> None: diff --git a/src/python/jw/pkg/cmds/distro/CmdSelect.py b/src/python/jw/pkg/cmds/pkg/CmdSelect.py similarity index 88% rename from src/python/jw/pkg/cmds/distro/CmdSelect.py rename to src/python/jw/pkg/cmds/pkg/CmdSelect.py index 4a0b7948..d676455f 100644 --- a/src/python/jw/pkg/cmds/distro/CmdSelect.py +++ b/src/python/jw/pkg/cmds/pkg/CmdSelect.py @@ -5,12 +5,12 @@ import re from ...lib.Package import Package from ...lib.PackageFilter import PackageFilterString -from ..CmdDistro import CmdDistro +from ..CmdPkg import CmdPkg from .Cmd import Cmd 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") def add_arguments(self, parser: ArgumentParser) -> None: diff --git a/src/python/jw/pkg/cmds/distro/pkg/Makefile b/src/python/jw/pkg/cmds/pkg/Makefile similarity index 53% rename from src/python/jw/pkg/cmds/distro/pkg/Makefile rename to src/python/jw/pkg/cmds/pkg/Makefile index cf0c2a12..f342bd8e 100644 --- a/src/python/jw/pkg/cmds/distro/pkg/Makefile +++ b/src/python/jw/pkg/cmds/pkg/Makefile @@ -1,5 +1,5 @@ -TOPDIR = ../../../../../../.. -#PY_UPDATE_INIT_PY = false +TOPDIR = ../../../../../.. +PY_UPDATE_INIT_PY = false include $(TOPDIR)/make/proj.mk include $(JWBDIR)/make/py-mod.mk diff --git a/src/python/jw/pkg/cmds/distro/pkg/Cmd.py b/src/python/jw/pkg/cmds/pkg/NamedPkgsCmd.py similarity index 86% rename from src/python/jw/pkg/cmds/distro/pkg/Cmd.py rename to src/python/jw/pkg/cmds/pkg/NamedPkgsCmd.py index 9a2038ea..2dfe2c6a 100644 --- a/src/python/jw/pkg/cmds/distro/pkg/Cmd.py +++ b/src/python/jw/pkg/cmds/pkg/NamedPkgsCmd.py @@ -2,10 +2,10 @@ from argparse import Namespace, ArgumentParser -from ..Cmd import Cmd as Base +from .Cmd import Cmd as Base from ..CmdPkg import CmdPkg as Parent -class Cmd(Base): # export +class NamedPkgsCmd(Base): # export def __init__(self, parent: Parent, name: str, help: str) -> None: super().__init__(parent, name, help) diff --git a/src/python/jw/pkg/cmds/pkg/__init__.py b/src/python/jw/pkg/cmds/pkg/__init__.py new file mode 100644 index 00000000..7837b8d7 --- /dev/null +++ b/src/python/jw/pkg/cmds/pkg/__init__.py @@ -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)