diff --git a/sdwire/backend/device/sdwire.py b/sdwire/backend/device/sdwire.py index cb30e57..8d270d3 100644 --- a/sdwire/backend/device/sdwire.py +++ b/sdwire/backend/device/sdwire.py @@ -3,6 +3,11 @@ import usb.core from sdwire.backend.device.usb_device import USBDevice, PortInfo from sdwire.backend.block_device_utils import map_usb_device_to_block_device +from sdwire.constants import ( + PRINT_SERIAL_SECTION_WIDTH, + PRINT_PRODUCT_INFO_SECTION_WIDTH, + PRINT_BLOCK_DEV_SECTION_WIDTH, +) log = logging.getLogger(__name__) @@ -79,7 +84,10 @@ def storage_device(self) -> Optional[usb.core.Device]: def __str__(self) -> str: block_dev_str = self.block_dev if self.block_dev is not None else "None" - return f"{self.serial_string:<30}[{int(self.manufacturer_string):04x}::{int(self.product_string):04x}]\t\t{block_dev_str}" + product_info_section = ( + f"[{int(self.manufacturer_string):04x}::{int(self.product_string):04x}]" + ) + return f"{self.serial_string:<{PRINT_SERIAL_SECTION_WIDTH}}{product_info_section:<{PRINT_PRODUCT_INFO_SECTION_WIDTH}}{block_dev_str:<{PRINT_BLOCK_DEV_SECTION_WIDTH}}" def __repr__(self) -> str: return self.__str__() diff --git a/sdwire/backend/device/sdwire3_pro.py b/sdwire/backend/device/sdwire3_pro.py new file mode 100644 index 0000000..ee0d654 --- /dev/null +++ b/sdwire/backend/device/sdwire3_pro.py @@ -0,0 +1,11 @@ +import logging +from sdwire.backend.device.usb_device import PortInfo +from sdwire.backend.device.sdwire import SDWire + +log = logging.getLogger(__name__) + + +class SDWire3Pro(SDWire): + + def __init__(self, port_info: PortInfo): + super().__init__(port_info, 2) diff --git a/sdwire/backend/device/sdwirec.py b/sdwire/backend/device/sdwirec.py index 7c3d0a5..08a0d63 100644 --- a/sdwire/backend/device/sdwirec.py +++ b/sdwire/backend/device/sdwirec.py @@ -7,6 +7,11 @@ map_usb_device_to_block_device, find_sibling_storage_device, ) +from sdwire.constants import ( + PRINT_SERIAL_SECTION_WIDTH, + PRINT_PRODUCT_INFO_SECTION_WIDTH, + PRINT_BLOCK_DEV_SECTION_WIDTH, +) log = logging.getLogger(__name__) @@ -37,7 +42,8 @@ def _update_block_device(self) -> None: def __str__(self) -> str: block_dev_str = self.block_dev if self.block_dev is not None else "None" - return f"{self.serial_string:<30}[{self.product_string}::{self.manufacturer_string}]\t\t{block_dev_str}" + product_info_section = f"[{self.product_string}::{self.manufacturer_string}]" + return f"{self.serial_string:<{PRINT_SERIAL_SECTION_WIDTH}}{product_info_section:<{PRINT_PRODUCT_INFO_SECTION_WIDTH}}{block_dev_str:<{PRINT_BLOCK_DEV_SECTION_WIDTH}}" def __repr__(self) -> str: return self.__str__() diff --git a/sdwire/constants.py b/sdwire/constants.py index a0779ba..fdbdc13 100644 --- a/sdwire/constants.py +++ b/sdwire/constants.py @@ -5,3 +5,7 @@ SDWIREC_PRODUCT_STRING = "sd-wire" USB_MASS_STORAGE_CLASS_ID = 8 + +PRINT_SERIAL_SECTION_WIDTH = 30 +PRINT_PRODUCT_INFO_SECTION_WIDTH = 20 +PRINT_BLOCK_DEV_SECTION_WIDTH = 50 diff --git a/sdwire/main.py b/sdwire/main.py index 405e314..bfd823f 100644 --- a/sdwire/main.py +++ b/sdwire/main.py @@ -10,6 +10,11 @@ import click from sdwire.backend import utils from sdwire.backend import detect +from sdwire.constants import ( + PRINT_SERIAL_SECTION_WIDTH, + PRINT_PRODUCT_INFO_SECTION_WIDTH, + PRINT_BLOCK_DEV_SECTION_WIDTH, +) @click.group() @@ -24,7 +29,9 @@ def main(debug: Optional[bool] = None) -> None: @main.command() def list() -> None: """List all connected SDWire devices with their block device information.""" - print(f"{'Serial':<30}Product Info\t\tBlock Dev") + print( + f"{'Serial':<{PRINT_SERIAL_SECTION_WIDTH}}{'Product Info':<{PRINT_PRODUCT_INFO_SECTION_WIDTH}}{'Block Dev':<{PRINT_BLOCK_DEV_SECTION_WIDTH}}" + ) for sdwire in detect.get_sdwire_devices(): print(sdwire)