diff --git a/rogue/__main__.py b/rogue/__main__.py index 03e7fabe..06a690ae 100644 --- a/rogue/__main__.py +++ b/rogue/__main__.py @@ -67,6 +67,12 @@ def common_parser() -> ArgumentParser: default="localhost", help="Host for the example agent (default: localhost)", ) + parent_parser.add_argument( + "--force-reinstall", + action="store_true", + default=False, + help="Force reinstallation of the TUI.", + ) parent_parser.add_argument( "--example-port", type=int, @@ -226,7 +232,7 @@ def main() -> None: logger.info("Starting rogue-ai...") # Step 1: Install rogue-tui if needed - if not RogueTuiInstaller().install_rogue_tui(): + if not RogueTuiInstaller().install_rogue_tui(force=args.force_reinstall): logger.error("Failed to install rogue-tui. Exiting.") if example_process: example_process.terminate() @@ -273,7 +279,9 @@ def main() -> None: exit_code = asyncio.run(run_cli(args)) sys.exit(exit_code) elif args.mode == "tui": - if not RogueTuiInstaller().install_rogue_tui(): + if not RogueTuiInstaller().install_rogue_tui( + force=args.force_reinstall + ): logger.error("Failed to install rogue-tui. Exiting.") sys.exit(1) exit_code = run_rogue_tui() diff --git a/rogue/common/tui_installer.py b/rogue/common/tui_installer.py index b1783d73..32813593 100644 --- a/rogue/common/tui_installer.py +++ b/rogue/common/tui_installer.py @@ -165,14 +165,18 @@ def _is_rogue_tui_installed(self) -> bool: else: return False - def install_rogue_tui( - self, - upgrade: bool = False, - ) -> bool: - """Install rogue-tui from GitHub releases if not already installed.""" + def install_rogue_tui(self, force: bool = False) -> bool: + """Install rogue-tui from GitHub releases if not already installed. + + Args: + force: Force installation even if already installed. + + Returns: + bool: True if installation succeeded, False otherwise. + """ console = Console() # Check if rogue-tui is already available - if self._is_rogue_tui_installed() and not upgrade: + if self._is_rogue_tui_installed() and not force: console.print("[green]✅ rogue-tui is already installed.[/green]") return True