added trigger mapping
This commit is contained in:
@@ -2,6 +2,11 @@ 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
|
||||||
|
|
||||||
|
|
||||||
|
class TriggerTuple(NamedTuple):
|
||||||
|
name: str
|
||||||
|
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
@@ -20,3 +25,19 @@ class Config:
|
|||||||
@cached_property
|
@cached_property
|
||||||
def loglevel(self) -> str:
|
def loglevel(self) -> str:
|
||||||
return self.app_root.xpath('logLevel').pop().text
|
return self.app_root.xpath('logLevel').pop().text
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def testmode(self) -> bool:
|
||||||
|
value = self.app_root.xpath('testMode').pop().text.lower()
|
||||||
|
if value not in ['true', 'false']:
|
||||||
|
raise ValueError("testMode can only be 'true' or 'false")
|
||||||
|
return True if value == 'true' else False
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def triggertuples(self) -> list[TriggerTuple]:
|
||||||
|
ret_val = []
|
||||||
|
_triggers = self.app_root.xpath('triggers/trigger')
|
||||||
|
for trigger in _triggers:
|
||||||
|
name = trigger.xpath('name').pop().text
|
||||||
|
ret_val.append(TriggerTuple(name=name))
|
||||||
|
return ret_val
|
||||||
|
|||||||
@@ -1,17 +1,21 @@
|
|||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from logger import getLogger
|
from logger import getLogger
|
||||||
from triggers.roon import RoonTrigger
|
from mapping import trigger_mapping
|
||||||
from config import Config
|
from config import Config
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main() -> None:
|
||||||
basepath = Path(__file__).parent.resolve()
|
basepath = Path(__file__).parent.resolve()
|
||||||
config = Config(basepath)
|
config = Config(basepath)
|
||||||
log = getLogger('main', loglevel=config.loglevel.upper())
|
log = getLogger('main', loglevel=config.loglevel.upper())
|
||||||
log.info("starting")
|
if config.testmode:
|
||||||
new_trigger = RoonTrigger(config)
|
log.warning("starting in testmode, cpu adjustments have been disabled")
|
||||||
|
triggers = []
|
||||||
|
for triggertuple in config.triggertuples:
|
||||||
|
triggers.append(
|
||||||
|
trigger_mapping[triggertuple.name](triggertuple.name, config)
|
||||||
|
)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<cpuGovernorAutoAdjust>
|
<cpuGovernorAutoAdjust>
|
||||||
<logLevel>Debug</logLevel>
|
<logLevel>Debug</logLevel>
|
||||||
|
<testMode>true</testMode>
|
||||||
|
<triggers>
|
||||||
|
<trigger>
|
||||||
|
<name>roon</name>
|
||||||
|
</trigger>
|
||||||
|
</triggers>
|
||||||
</cpuGovernorAutoAdjust>
|
</cpuGovernorAutoAdjust>
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
from types import MappingProxyType
|
||||||
|
from triggers.roon import RoonTrigger
|
||||||
|
|
||||||
|
_dict_mapping = {
|
||||||
|
'roon': RoonTrigger
|
||||||
|
}
|
||||||
|
trigger_mapping = MappingProxyType(_dict_mapping)
|
||||||
+2
-1
@@ -2,7 +2,8 @@ from logger import getLogger
|
|||||||
from config import Config
|
from config import Config
|
||||||
|
|
||||||
class Trigger:
|
class Trigger:
|
||||||
def __init__(self, config: Config) -> None:
|
def __init__(self, name: str, config: Config) -> None:
|
||||||
|
self.name = name
|
||||||
self.log = getLogger('trigger', loglevel=config.loglevel.upper())
|
self.log = getLogger('trigger', loglevel=config.loglevel.upper())
|
||||||
self.log.info(f'initializing {self.__class__.__name__}')
|
self.log.info(f'initializing {self.__class__.__name__}')
|
||||||
|
|
||||||
+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, config: Config) -> None:
|
def __init__(self, name: str, config: Config) -> None:
|
||||||
super().__init__(config)
|
super().__init__(name, config)
|
||||||
|
|
||||||
Reference in New Issue
Block a user