added several new files

This commit is contained in:
2024-12-05 10:40:38 +01:00
parent 5d7dd05c99
commit 51b8647ded
10 changed files with 109 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
__pycache__/
+18
View File
@@ -0,0 +1,18 @@
import argparse
from functools import cached_property
class ArgumentsParser:
@cached_property
def parser(self):
parser = argparse.ArgumentParser(
prog=__file__,
description='Trigger based CPU governor auto adjust program.',
epilog='Happy CPU controlling'
)
parser.add_argument(
'-c', '--config',
type=str,
required=False,
default='cpu_governor_auto_adjust.xml',
)
return parser.parse_args()
+22
View File
@@ -0,0 +1,22 @@
from pathlib import Path
from lxml import etree
from functools import cached_property
from arguments import ArgumentsParser
class Config:
def __init__(self, basepath: Path) -> None:
self.basepath = basepath
self.config = ArgumentsParser().parser.config
@cached_property
def root(self) -> etree.ElementTree:
return etree.parse(self.basepath / self.config)
@cached_property
def app_root(self) -> etree.Element:
return self.root.xpath('/cpuGovernorAutoAdjust').pop()
@cached_property
def loglevel(self) -> str:
return self.app_root.xpath('logLevel').pop().text
Regular → Executable
+15
View File
@@ -1,2 +1,17 @@
#!/usr/bin/python3 #!/usr/bin/python3
from pathlib import Path
from logger import getLogger
from triggers.roon import RoonTrigger
from config import Config
def main():
basepath = Path(__file__).parent.resolve()
config = Config(basepath)
log = getLogger('main', loglevel=config.loglevel.upper())
log.info("starting")
new_trigger = RoonTrigger(config)
if __name__ == "__main__":
main()
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<cpuGovernorAutoAdjust>
<logLevel>Debug</logLevel>
</cpuGovernorAutoAdjust>
+33
View File
@@ -0,0 +1,33 @@
import logging
from logging import Logger
import os
import sys
def getLogger(name: str = 'root', loglevel: str = 'INFO') -> Logger:
logger = logging.getLogger(name)
# if logger 'name' already exists, return it to avoid logging duplicate
# messages by attaching multiple handlers of the same type
if logger.handlers:
return logger
# if logger 'name' does not already exist, create it and attach handlers
else:
# set logLevel to loglevel or to INFO if requested level is incorrect
loglevel = getattr(logging, loglevel.upper(), logging.INFO)
logger.setLevel(loglevel)
if loglevel == logging.DEBUG:
fmt = '%(asctime)s %(levelname)-8s %(message)s (%(filename)s)'
else:
fmt = '%(asctime)s %(levelname)-8s %(message)s'
fmt_date = '%Y-%m-%dT%T'
formatter = logging.Formatter(fmt, fmt_date)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)
if logger.name == 'root':
logger.warning('Running: %s %s',
os.path.basename(sys.argv[0]),
' '.join(sys.argv[1:]))
return logger
View File
+1
View File
@@ -0,0 +1 @@
+8
View File
@@ -0,0 +1,8 @@
from logger import getLogger
from config import Config
class Trigger:
def __init__(self, config: Config) -> None:
self.log = getLogger('trigger', loglevel=config.loglevel.upper())
self.log.info(f'initializing {self.__class__.__name__}')
+7
View File
@@ -0,0 +1,7 @@
from trigger import Trigger
from config import Config
class RoonTrigger(Trigger):
def __init__(self, config: Config) -> None:
super().__init__(config)