added several new files
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
__pycache__/
|
||||||
@@ -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()
|
||||||
@@ -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
@@ -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()
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<cpuGovernorAutoAdjust>
|
||||||
|
<logLevel>Debug</logLevel>
|
||||||
|
</cpuGovernorAutoAdjust>
|
||||||
@@ -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
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
@@ -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__}')
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
from trigger import Trigger
|
||||||
|
from config import Config
|
||||||
|
|
||||||
|
class RoonTrigger(Trigger):
|
||||||
|
def __init__(self, config: Config) -> None:
|
||||||
|
super().__init__(config)
|
||||||
|
|
||||||
Reference in New Issue
Block a user