added config to Trigger
This commit is contained in:
@@ -3,7 +3,7 @@ from pathlib import Path
|
|||||||
from lxml import etree
|
from lxml import etree
|
||||||
from functools import cached_property
|
from functools import cached_property
|
||||||
from arguments import ArgumentsParser
|
from arguments import ArgumentsParser
|
||||||
from typing import NamedTuple
|
from typing import NamedTuple, Optional
|
||||||
|
|
||||||
|
|
||||||
class TriggerTuple(NamedTuple):
|
class TriggerTuple(NamedTuple):
|
||||||
@@ -11,6 +11,10 @@ class TriggerTuple(NamedTuple):
|
|||||||
interval_in_seconds: int
|
interval_in_seconds: int
|
||||||
|
|
||||||
|
|
||||||
|
class MissingConfig(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
def __init__(self, basepath: Path) -> None:
|
def __init__(self, basepath: Path) -> None:
|
||||||
self.basepath = basepath
|
self.basepath = basepath
|
||||||
@@ -57,3 +61,7 @@ class Config:
|
|||||||
)
|
)
|
||||||
|
|
||||||
return ret_val
|
return ret_val
|
||||||
|
|
||||||
|
def get_trigger_by_name(self, name: str) -> Optional[TriggerTuple]:
|
||||||
|
_all_trigger_tuples = self.triggertuples.copy()
|
||||||
|
return next((t for t in _all_trigger_tuples if t.name == name), None)
|
||||||
|
|||||||
+12
-3
@@ -1,9 +1,18 @@
|
|||||||
from logger import getLogger
|
from logger import getLogger
|
||||||
from config import Config
|
from config import Config, TriggerTuple, MissingConfig
|
||||||
|
|
||||||
class Trigger:
|
class Trigger:
|
||||||
def __init__(self, name: str, config: Config) -> None:
|
def __init__(self, name: str, _config: Config) -> None:
|
||||||
self.name = name
|
self.name = name
|
||||||
self.log = getLogger('trigger', loglevel=config.loglevel.upper())
|
self._config = _config
|
||||||
|
self.log = getLogger('trigger', loglevel=_config.loglevel.upper())
|
||||||
self.log.info(f'initializing {self.__class__.__name__}')
|
self.log.info(f'initializing {self.__class__.__name__}')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def config(self) -> TriggerTuple:
|
||||||
|
_config = self._config.get_trigger_by_name(self.name)
|
||||||
|
if _config is None:
|
||||||
|
raise MissingConfig(f"Trigger {self.name} hasn't been properly configures")
|
||||||
|
return _config
|
||||||
|
|
||||||
|
|
||||||
+2
-2
@@ -2,6 +2,6 @@ from trigger import Trigger
|
|||||||
from config import Config
|
from config import Config
|
||||||
|
|
||||||
class RoonTrigger(Trigger):
|
class RoonTrigger(Trigger):
|
||||||
def __init__(self, name: str, config: Config) -> None:
|
def __init__(self, name: str, _config: Config) -> None:
|
||||||
super().__init__(name, config)
|
super().__init__(name, _config)
|
||||||
|
|
||||||
Reference in New Issue
Block a user