Rewrite eepprog.py using the Click framework

This commit is contained in:
Lexi / Zoe 2021-06-11 22:19:09 +02:00
parent f00e52cc4c
commit cedb5bfe81
Signed by: binaryDiv
GPG key ID: F8D4956E224DA232
6 changed files with 171 additions and 120 deletions

View file

@ -0,0 +1,10 @@
from . import Logger, EepromProgrammer
class CliContext:
logger: Logger
eeprom_programmer: EepromProgrammer
def __init__(self, logger: Logger, eeprom_programmer: EepromProgrammer):
self.logger = logger
self.eeprom_programmer = eeprom_programmer

View file

@ -0,0 +1,52 @@
from serial import Serial
from typing import Optional
from . import Logger
class EepromProgrammer:
# Dependencies
logger: Logger
serial: Optional[Serial]
# Settings
_device_file: str
_baudrate: int
def __init__(self, logger: Logger, device: str, baudrate):
self.logger = logger
self.serial = None
self._device_file = device
self._baudrate = baudrate
# TODO
def open(self):
"""
Open and setup serial port.
"""
assert self.serial is None, 'Serial port is already opened!'
self.logger.debug("Setting up serial device '{}' with baudrate {}".format(self._device_file, self._baudrate))
self.serial = Serial(self._device_file, self._baudrate)
def close(self):
if self.serial is None:
self.logger.debug("Serial port is already closed")
return
self.logger.debug("Closing serial port")
self.serial.close()
# TODO
def test(self):
# Open serial port
if self.serial is None:
self.open()
# Write a test command
self.logger.info("Sending 'INIT' ...")
self.serial.write(b"INIT\n")
# Just read some stuff
self.logger.info("Read line: ", self.serial.readline(80))

57
client/helpers/Logger.py Normal file
View file

@ -0,0 +1,57 @@
from typing import Any
import click
class Logger:
verbose: bool
def __init__(self, verbose: bool = False):
self.verbose = verbose
@staticmethod
def _log(prefix: str = 'LOG', message: Any = '', nl: bool = True, **kwargs) -> None:
text = '{}: {}'.format(prefix, message) if message else ''
click.secho(text, nl=nl, **kwargs)
@staticmethod
def _join(*args, delimiter: str = ' ') -> str:
return delimiter.join([str(arg) for arg in args])
def debug(self, *args, **kwargs) -> None:
"""
Write a message to stdout only if the '--verbose' option is set (in gray).
"""
if self.verbose:
kwargs.setdefault('fg', 'bright_black')
self._log('DEBUG', self._join(*args), **kwargs)
def info(self, *args, **kwargs) -> None:
"""
Write a message to stdout (in white).
"""
kwargs.setdefault('fg', 'white')
self._log('INFO', self._join(*args), **kwargs)
def warn(self, *args, **kwargs) -> None:
"""
Write a warning message to stderr (in yellow).
"""
kwargs.setdefault('fg', 'yellow')
self._log('WARNING', self._join(*args), **kwargs)
def error(self, *args, **kwargs) -> None:
"""
Write an error message to stderr (in red).
"""
kwargs.setdefault('fg', 'red')
self._log('ERROR', self._join(*args), err=True, **kwargs)
def success(self, *args, **kwargs) -> None:
"""
Write a success message stdout (in green).
"""
kwargs.setdefault('fg', 'green')
self._log('SUCCESS', self._join(*args), **kwargs)
logger = Logger()

View file

@ -0,0 +1,3 @@
from .CliContext import CliContext
from .Logger import Logger
from .EepromProgrammer import EepromProgrammer