From 071786fe16a1aee232c61057c93188ad012dfab0 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 25 Nov 2025 05:53:21 +0100 Subject: [PATCH] feat: add relay:tmux:attach to join existing session --- src/cli/program.ts | 13 +++++++++++++ src/cli/relay_tmux.ts | 25 ++++++++++++++----------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/cli/program.ts b/src/cli/program.ts index 084437b2c..87605d7c5 100644 --- a/src/cli/program.ts +++ b/src/cli/program.ts @@ -270,5 +270,18 @@ With Tailscale: } }); + program + .command("relay:tmux:attach") + .description("Attach to the existing warelay-relay tmux session (no restart)") + .action(async () => { + try { + await spawnRelayTmux("pnpm warelay relay --verbose", true, false); + defaultRuntime.log(info("Attached to warelay-relay session.")); + } catch (err) { + defaultRuntime.error(danger(`Failed to attach to warelay-relay: ${String(err)}`)); + defaultRuntime.exit(1); + } + }); + return program; } diff --git a/src/cli/relay_tmux.ts b/src/cli/relay_tmux.ts index b31927c93..e4c3366d3 100644 --- a/src/cli/relay_tmux.ts +++ b/src/cli/relay_tmux.ts @@ -5,19 +5,22 @@ const SESSION = "warelay-relay"; export async function spawnRelayTmux( cmd = "pnpm warelay relay --verbose", attach = true, + restart = true, ) { - await killSession(SESSION); - await new Promise((resolve, reject) => { - const child = spawn("tmux", ["new", "-d", "-s", SESSION, cmd], { - stdio: "inherit", - shell: false, + if (restart) { + await killSession(SESSION); + await new Promise((resolve, reject) => { + const child = spawn("tmux", ["new", "-d", "-s", SESSION, cmd], { + stdio: "inherit", + shell: false, + }); + child.on("error", reject); + child.on("exit", (code) => { + if (code === 0) resolve(); + else reject(new Error(`tmux exited with code ${code}`)); + }); }); - child.on("error", reject); - child.on("exit", (code) => { - if (code === 0) resolve(); - else reject(new Error(`tmux exited with code ${code}`)); - }); - }); + } if (attach) { await new Promise((resolve, reject) => {