Skip to content

Commit 78cbd82

Browse files
author
Tomer Shalev
committed
Prevent stacktrace from being shown in case of no devices
1 parent cd0b60d commit 78cbd82

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

src/labelle/cli/cli.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
Justify,
2929
e_qrcode,
3030
)
31-
from labelle.lib.devices.device_manager import DeviceManager, DeviceManagerError
31+
from labelle.lib.devices.device_manager import DeviceManager, DeviceManagerNoDevices
3232
from labelle.lib.devices.dymo_labeler import DymoLabeler
3333
from labelle.lib.env_config import is_verbose_env_vars
3434
from labelle.lib.font_config import NoFontFound, get_available_fonts, get_font_path
@@ -89,18 +89,23 @@ def qr_callback(qr_content: str) -> str:
8989
return qr_content
9090

9191

92-
app = typer.Typer()
93-
94-
95-
@app.command()
96-
def list_devices():
92+
def get_device_manager() -> DeviceManager:
9793
device_manager = DeviceManager()
9894
try:
9995
device_manager.scan()
100-
except DeviceManagerError as e:
101-
typer.echo(e)
96+
except DeviceManagerNoDevices as e:
97+
err_console = Console(stderr=True)
98+
err_console.print(f"Error: {e}")
10299
raise typer.Exit() from e
100+
return device_manager
101+
103102

103+
app = typer.Typer()
104+
105+
106+
@app.command()
107+
def list_devices():
108+
device_manager = get_device_manager()
104109
console = Console()
105110
table = Table(show_header=True)
106111
table.add_column("Manufacturer")
@@ -296,8 +301,7 @@ def default(
296301
)
297302

298303
if output == Output.printer:
299-
device_manager = DeviceManager()
300-
device_manager.scan()
304+
device_manager = get_device_manager()
301305
device = device_manager.find_and_select_device(patterns=device_pattern)
302306
device.setup()
303307
else:

src/labelle/lib/devices/device_manager.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ class DeviceManagerError(RuntimeError):
1818
pass
1919

2020

21+
class DeviceManagerNoDevices(DeviceManagerError):
22+
pass
23+
24+
2125
class DeviceManager:
2226
_devices: dict[str, UsbDevice]
2327

@@ -33,7 +37,7 @@ def scan(self) -> bool:
3337
raise DeviceManagerError(f"Failed scanning devices: {e}") from e
3438
if len(cur) == 0:
3539
self._devices.clear()
36-
raise DeviceManagerError("No supported devices found")
40+
raise DeviceManagerNoDevices("No supported devices found")
3741

3842
prev_set = set(prev)
3943
cur_set = set(cur)

0 commit comments

Comments
 (0)