added trigger mapping
This commit is contained in:
@@ -2,6 +2,11 @@ from pathlib import Path
|
||||
from lxml import etree
|
||||
from functools import cached_property
|
||||
from arguments import ArgumentsParser
|
||||
from typing import NamedTuple
|
||||
|
||||
|
||||
class TriggerTuple(NamedTuple):
|
||||
name: str
|
||||
|
||||
|
||||
class Config:
|
||||
@@ -20,3 +25,19 @@ class Config:
|
||||
@cached_property
|
||||
def loglevel(self) -> str:
|
||||
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
|
||||
from pathlib import Path
|
||||
from logger import getLogger
|
||||
from triggers.roon import RoonTrigger
|
||||
from mapping import trigger_mapping
|
||||
from config import Config
|
||||
|
||||
|
||||
def main():
|
||||
def main() -> None:
|
||||
basepath = Path(__file__).parent.resolve()
|
||||
config = Config(basepath)
|
||||
log = getLogger('main', loglevel=config.loglevel.upper())
|
||||
log.info("starting")
|
||||
new_trigger = RoonTrigger(config)
|
||||
|
||||
if config.testmode:
|
||||
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__":
|
||||
main()
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<cpuGovernorAutoAdjust>
|
||||
<logLevel>Debug</logLevel>
|
||||
<testMode>true</testMode>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<name>roon</name>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</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
|
||||
|
||||
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.info(f'initializing {self.__class__.__name__}')
|
||||
|
||||
+2
-2
@@ -2,6 +2,6 @@ from trigger import Trigger
|
||||
from config import Config
|
||||
|
||||
class RoonTrigger(Trigger):
|
||||
def __init__(self, config: Config) -> None:
|
||||
super().__init__(config)
|
||||
def __init__(self, name: str, config: Config) -> None:
|
||||
super().__init__(name, config)
|
||||
|
||||
Reference in New Issue
Block a user