Rewrite eepprog.py using the Click framework
This commit is contained in:
parent
f00e52cc4c
commit
cedb5bfe81
6 changed files with 171 additions and 120 deletions
10
client/helpers/CliContext.py
Normal file
10
client/helpers/CliContext.py
Normal 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
|
||||
52
client/helpers/EepromProgrammer.py
Normal file
52
client/helpers/EepromProgrammer.py
Normal 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
57
client/helpers/Logger.py
Normal 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()
|
||||
3
client/helpers/__init__.py
Normal file
3
client/helpers/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .CliContext import CliContext
|
||||
from .Logger import Logger
|
||||
from .EepromProgrammer import EepromProgrammer
|
||||
Loading…
Add table
Add a link
Reference in a new issue