eepprog.py: Add list-devices command

This commit is contained in:
Lexi / Zoe 2021-06-12 01:52:24 +02:00
parent cedb5bfe81
commit d9a7cb401d
Signed by: binaryDiv
GPG key ID: F8D4956E224DA232
2 changed files with 55 additions and 22 deletions

View file

@ -1,6 +1,7 @@
#!/usr/bin/env python3
import click
import serial.tools.list_ports
from helpers import CliContext, Logger, EepromProgrammer
@ -12,14 +13,13 @@ from helpers import CliContext, Logger, EepromProgrammer
metavar='BAUDRATE', help="Set the baud rate of the serial device")
@click.option('--verbose', '-v', is_flag=True, help='Print debug output')
@click.pass_context
def eepprog(ctx: click.Context, device: str, baud: int, verbose: bool):
def eepprog(ctx: click.Context, device: str, baud: int, verbose: bool) -> None:
# Create dependencies
logger = Logger(verbose=verbose)
eeprom_programmer = EepromProgrammer(logger=logger, device=device, baudrate=baud)
logger.debug("Creating CLI context (device: {}, bauds: {})".format(device, baud))
# Create CLI context
logger.debug("Creating CLI context")
ctx.obj = CliContext(
logger=logger,
eeprom_programmer=eeprom_programmer,
@ -31,7 +31,7 @@ def eepprog(ctx: click.Context, device: str, baud: int, verbose: bool):
@eepprog.command('hello', short_help='Say hello. :)')
@click.pass_obj
def hello(context: CliContext):
def hello(context: CliContext) -> None:
"""
Say hello. :)
@ -48,17 +48,34 @@ def hello(context: CliContext):
@eepprog.command('test', short_help="Send INIT command to the programmer and read answer")
@click.pass_obj
def test(context: CliContext):
def test(context: CliContext) -> None:
"""
Send an 'INIT' command to the programmer and read the answer.
Test command for debugging.
"""
context.eeprom_programmer.test()
context.eeprom_programmer.test_command()
@eepprog.command('list-devices', short_help="List available serial ports")
@click.pass_obj
def list_devices(context: CliContext) -> None:
"""
List serial ports that are available on the system.
Internally uses 'serial.tools.list_ports' of pySerial.
"""
context.logger.debug("Getting list of serial ports")
ports = serial.tools.list_ports.comports()
context.logger.debug() # Print empty line
click.echo("Found {} serial ports:".format(len(ports)))
for port in ports:
click.echo('' + str(port))
# TODO command: list-devices -> serial.tools.list_ports
# TODO shell: Run an interactive shell
if __name__ == '__main__':
eepprog()
eepprog(max_content_width=120)