# -*- 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)