Coverage for aipyapp/cli/command/base.py: 0%
30 statements
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-11 12:02 +0200
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-11 12:02 +0200
1from enum import Enum
2from typing import List
4from loguru import logger
6class CommandMode(Enum):
7 MAIN = "main"
8 TASK = "task"
10class Completable:
11 def __init__(self, name: str, desc=None, **kwargs):
12 super().__init__()
13 self.name = name
14 self.desc = desc
15 self._options = kwargs
17 def __getitem__(self, key):
18 return self._options[key]
20 def __setitem__(self, key, value):
21 self._options[key] = value
23 def __contains__(self, key):
24 return key in self._options
26 def get(self, key, default=None):
27 return self._options.get(key, default)
29class BaseCommand(Completable):
30 """Base class for all commands"""
31 name: str = ''
32 description: str = ''
33 modes: List[CommandMode] = [CommandMode.MAIN]
35 def __init__(self, manager):
36 super().__init__(self.name, self.description)
37 self.manager = manager
38 self.log = logger.bind(src=f'cmd.{self.name}')
40 def execute(self, args, context=None):
41 pass