Skip to content

Commit e261213

Browse files
committed
feat(cli): add --with-server flag to CLI mode
1 parent 935788d commit e261213

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

rogue/__main__.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff 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,30 @@ 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+
args.rogue_server_url = f"http://{args.host}:{args.port}"
287+
288+
try:
289+
exit_code = asyncio.run(run_cli(args))
290+
except Exception as e:
291+
logger.error(f"CLI execution failed: {e}")
292+
exit_code = 1
293+
finally:
294+
if server_process:
295+
server_process.terminate()
296+
server_process.join()
267297
sys.exit(exit_code)
268298
elif args.mode == "tui":
269299
if not RogueTuiInstaller().install_rogue_tui():

0 commit comments

Comments
 (0)