diff --git a/src/constants.py b/src/constants.py index 0361d731..fffc8a34 100644 --- a/src/constants.py +++ b/src/constants.py @@ -55,6 +55,27 @@ INACTIVITY_TIMEOUT = 15 * 60 # 15 minutes # Duration in seconds that a notification remains active NOTIFICATION_DURATION = 10 +# ----------------------------------- +# GUI Backend Configuration +# ----------------------------------- +GUI_BACKEND_CONFIG = { + "linux": { + "pkg": "toga-gtk", + "version": "0.5.2", + "sha256": "15b346ac1a2584de5effe5e73a3888f055c68c93300aeb111db9d64186b31646", + }, + "win32": { + "pkg": "toga-winforms", + "version": "0.5.2", + "sha256": "83181309f204bcc4a34709d23fdfd68467ae8ecc39c906d13c661cb9a0ef581b", + }, + "darwin": { + "pkg": "toga-cocoa", + "version": "0.5.2", + "sha256": "a4d5d1546bf92372a6fb1b450164735fb107b2ee69d15bf87421fec3c78465f9", + }, +} + # ----------------------------------- # Additional Constants (if any) # ----------------------------------- diff --git a/src/seedpass/cli/__init__.py b/src/seedpass/cli/__init__.py index 1e6d66ab..989c133c 100644 --- a/src/seedpass/cli/__init__.py +++ b/src/seedpass/cli/__init__.py @@ -10,6 +10,7 @@ import typer from .common import _get_services from seedpass.core.errors import SeedPassError +from constants import GUI_BACKEND_CONFIG app = typer.Typer( help="SeedPass command line interface", @@ -110,25 +111,20 @@ def gui( confirmation. """ if not _gui_backend_available(): - if sys.platform.startswith("linux"): - pkg = "toga-gtk" - version = "0.5.2" - sha256 = "15b346ac1a2584de5effe5e73a3888f055c68c93300aeb111db9d64186b31646" - elif sys.platform == "win32": - pkg = "toga-winforms" - version = "0.5.2" - sha256 = "83181309f204bcc4a34709d23fdfd68467ae8ecc39c906d13c661cb9a0ef581b" - elif sys.platform == "darwin": - pkg = "toga-cocoa" - version = "0.5.2" - sha256 = "a4d5d1546bf92372a6fb1b450164735fb107b2ee69d15bf87421fec3c78465f9" - else: + platform_key = "linux" if sys.platform.startswith("linux") else sys.platform + backend_info = GUI_BACKEND_CONFIG.get(platform_key) + + if not backend_info: typer.echo( f"Unsupported platform '{sys.platform}' for BeeWare GUI.", err=True, ) raise typer.Exit(1) + pkg = backend_info["pkg"] + version = backend_info["version"] + sha256 = backend_info["sha256"] + if not install: typer.echo( f"BeeWare GUI backend not found. Please install {pkg} manually or rerun "