diff --git a/python_payload/st3m/run.py b/python_payload/st3m/run.py index b61ddd856955143889b49ddc3ce6db8ef5bd075b..d3bc0063e6f2e852477dc73ab7696948b8d3cae1 100644 --- a/python_payload/st3m/run.py +++ b/python_payload/st3m/run.py @@ -1,5 +1,5 @@ from st3m.reactor import Reactor, Responder -from st3m.goose import List +from st3m.goose import List, Optional from st3m.ui.menu import ( MenuItem, MenuItemBack, @@ -23,6 +23,9 @@ import machine log = logging.Log(__name__, level=logging.INFO) +#: Can be set to a bundle name that should be started instead of the main menu when run_main is called. +override_main_app: Optional[str] = None + def _make_reactor() -> Reactor: reactor = Reactor() @@ -144,6 +147,14 @@ def run_main() -> None: MenuItemForeground("System", menu_system), ], ) + if override_main_app is not None: + requested = [b for b in bundles if b.name == override_main_app] + print([b.name for b in bundles]) + if len(requested) > 1: + raise Exception(f"More than one bundle named {override_main_app}") + if len(requested) == 0: + raise Exception(f"Requested bundle {override_main_app} not found") + run_view(requested[0].load()) run_view(menu_main) diff --git a/sim/run.py b/sim/run.py index c6037d1f30e1828f4390a42729f257c7c0f4803f..8da91ef535ded29c6deb630037505508d8f8ec97 100644 --- a/sim/run.py +++ b/sim/run.py @@ -111,5 +111,9 @@ if len(sys.argv) >= 2 and sys.argv[1] == "screenshot": import hardware hardware.SCREENSHOT = True +elif len(sys.argv) == 2: + import st3m.run + + st3m.run.override_main_app = sys.argv[1] import main