Skip to content

Commit

Permalink
code: wait on tmux channel for no-tty cli operation
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Hopps <[email protected]>
  • Loading branch information
choppsv1 committed Sep 13, 2024
1 parent 45a5670 commit f8dbefc
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
22 changes: 21 additions & 1 deletion munet/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -756,6 +756,8 @@ async def remote_cli(unet, prompt, title, background):
unet.cli_sockpath = sockpath
logging.info("server created on :\n%s\n", sockpath)

wait_tmux = bool(os.getenv("TMUX", "")) and not sys.stdin.isatty()

# Open a new window with a new CLI
python_path = await unet.async_get_exec_path(["python3", "python"])
us = os.path.realpath(__file__)
Expand All @@ -765,7 +767,25 @@ async def remote_cli(unet, prompt, title, background):
if prompt:
cmd += f" --prompt='{prompt}'"
cmd += " " + unet.cli_sockpath
unet.run_in_window(cmd, title=title, background=False)

channel = None
if wait_tmux:
from .base import Commander # pylint: disable=import-outside-toplevel

channel = "{}-{}".format(os.getpid(), Commander.tmux_wait_gen)
logger.info("XXX channel is %s", channel)
# If we don't have a tty to pause on pause for tmux windows to exit
if channel is not None:
Commander.tmux_wait_gen += 1

unet.run_in_window(cmd, title=title, background=False, wait_for=channel)

if wait_tmux and channel:
from .base import commander # pylint: disable=import-outside-toplevel

await commander.async_cmd_raises(
[commander.get_exec_path("tmux"), "wait", channel]
)
except Exception as error:
logging.error("cli server: unexpected exception: %s", error)

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "munet"
version = "0.14.12"
version = "0.14.13"
description = "A package to facilitate network simulations"
authors = ["Christian Hopps <[email protected]>"]
license = "GPL-2.0-or-later"
Expand Down

0 comments on commit f8dbefc

Please sign in to comment.