File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -95,6 +95,13 @@ def parse_args() -> Namespace:
9595 help = "Run in non-interactive CLI mode" ,
9696 parents = [common_parser ()],
9797 )
98+ cli_parser .add_argument (
99+ "--with-server" ,
100+ action = "store_true" ,
101+ default = False ,
102+ help = "Start the rogue server alongside the CLI" ,
103+ )
104+ set_server_args (cli_parser )
98105 set_cli_args (cli_parser )
99106
100107 # TUI mode
@@ -263,7 +270,39 @@ def main() -> None:
263270 if args .mode == "server" :
264271 run_server (args , background = False )
265272 elif args .mode == "cli" :
266- exit_code = asyncio .run (run_cli (args ))
273+ server_process = None
274+ if args .with_server :
275+ try :
276+ server_process = run_server (
277+ args ,
278+ background = True ,
279+ )
280+ except Exception as e :
281+ logger .error (f"Failed to start rogue server: { e } " )
282+ sys .exit (1 )
283+ if not server_process :
284+ logger .error ("Failed to start rogue server. Exiting." )
285+ sys .exit (1 )
286+ client_host = (
287+ "127.0.0.1"
288+ if args .host in {"0.0.0.0" , "::" } # nosec B104
289+ else args .host
290+ )
291+ args .rogue_server_url = f"http://{ client_host } :{ args .port } "
292+
293+ exit_code = 1
294+ try :
295+ exit_code = asyncio .run (run_cli (args ))
296+ except KeyboardInterrupt :
297+ logger .info ("Keyboard interrupt received. Exiting." )
298+ exit_code = 0
299+ except Exception as e :
300+ logger .error (f"CLI execution failed: { e } " )
301+ exit_code = 1
302+ finally :
303+ if server_process :
304+ server_process .terminate ()
305+ server_process .join ()
267306 sys .exit (exit_code )
268307 elif args .mode == "tui" :
269308 if not RogueTuiInstaller ().install_rogue_tui ():
You can’t perform that action at this time.
0 commit comments