jw-pkg/src/python/jw/pkg/cmds/DistroBase.py

45 lines
1.3 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
import re, sys
from argparse import ArgumentParser
from ..lib.Distro import Distro
from ..App import App
from .Cmd import Cmd as Base
class DistroBase(Base): # export
def __init__(self, parent: App|Base, name: str, help: str) -> None:
self.__id = None
super().__init__(parent, name, help)
self._add_subcommands()
self.__distro: Distro|None = None
@property
def distro(self) -> Distro:
if self.__distro is None:
ret = Distro.instantiate(self.distro_id, ec=self.app.exec_context)
self.__distro = ret
return self.__distro
# --------------- legacy methods
@property
def distro_id(self):
if self.__id is None:
if self.app.args.id is not None:
# The distribution ID requested by the command line
self.__id = self.app.args.id
else:
# The ID of the distribution we run on
self.__id = self.app.distro_id
return self.__id
def add_arguments(self, p: ArgumentParser) -> None:
super().add_arguments(p)
p.add_argument('--id', default=None, help='Distribution ID (default is taken from /etc/os-release)')
async def _run(self, args):
# Missing subcommand
self.parser.print_help()
sys.exit(1)