added custom config and started developing roon trigger

This commit is contained in:
2024-12-16 22:52:07 +01:00
parent ccabbea9c6
commit 35c86ffbd3
6 changed files with 100 additions and 10 deletions
+14 -5
View File
@@ -4,16 +4,18 @@ from pathlib import Path
from lxml import etree
from functools import cached_property, lru_cache
from arguments import ArgumentsParser
from typing import NamedTuple, Optional
from typing import NamedTuple, Optional, Any
from collections import OrderedDict
import xmltodict
class TriggerTuple(NamedTuple):
name: str
interval_in_seconds: int
governor: str
custom_config: OrderedDict[str, Any]
def __repr__(self):
return f"{self.name}, interval: {self.interval_in_seconds}, governor: {self.governor}"
def __repr__(self) -> str:
return f"{self.name}, interval: {self.interval_in_seconds}, governor: {self.governor}, custom_config: {self.custom_config}"
class Config:
@@ -68,10 +70,17 @@ class Config:
name = self._get_single_text_value_from_xpath('name', trigger_elem)
interval_in_seconds = self._get_single_text_value_from_xpath('intervalInSeconds', trigger_elem)
governor = self._get_single_text_value_from_xpath('governor', trigger_elem)
try:
custom_config_elem = self._get_single_element_by_xpath('customConfig', trigger_elem)
custom_config = xmltodict.parse(etree.tostring(custom_config_elem))['customConfig']
except AssertionError:
self.log.debug("Trigger %s has no custom config", name)
custom_config = OrderedDict({})
_new_trigger = TriggerTuple(
name=name,
interval_in_seconds=int(interval_in_seconds),
governor=governor
governor=governor,
custom_config=custom_config
)
ret_val.append(_new_trigger)
self.log.info("Loaded trigger: %s", _new_trigger)