chore: attach when starting relay tmux session

This commit is contained in:
Peter Steinberger
2025-11-25 05:48:00 +01:00
parent 5291cb0dc2
commit bafaed37fe
2 changed files with 28 additions and 4 deletions

View File

@@ -253,11 +253,17 @@ With Tailscale:
program
.command("relay:tmux")
.description("Run relay --verbose inside tmux (session warelay-relay), restarting if already running")
.description(
"Run relay --verbose inside tmux (session warelay-relay), restarting if already running, then attach",
)
.action(async () => {
try {
const session = await spawnRelayTmux();
defaultRuntime.log(info(`tmux session started: ${session} (pane running "pnpm warelay relay --verbose")`));
const session = await spawnRelayTmux("pnpm warelay relay --verbose", true);
defaultRuntime.log(
info(
`tmux session started and attached: ${session} (pane running "pnpm warelay relay --verbose")`,
),
);
} catch (err) {
defaultRuntime.error(danger(`Failed to start relay tmux session: ${String(err)}`));
defaultRuntime.exit(1);

View File

@@ -2,7 +2,10 @@ import { spawn } from "node:child_process";
const SESSION = "warelay-relay";
export async function spawnRelayTmux(cmd = "pnpm warelay relay --verbose") {
export async function spawnRelayTmux(
cmd = "pnpm warelay relay --verbose",
attach = true,
) {
await killSession(SESSION);
await new Promise<void>((resolve, reject) => {
const child = spawn("tmux", ["new", "-d", "-s", SESSION, cmd], {
@@ -15,6 +18,21 @@ export async function spawnRelayTmux(cmd = "pnpm warelay relay --verbose") {
else reject(new Error(`tmux exited with code ${code}`));
});
});
if (attach) {
await new Promise<void>((resolve, reject) => {
const child = spawn("tmux", ["attach-session", "-t", SESSION], {
stdio: "inherit",
shell: false,
});
child.on("error", reject);
child.on("exit", (code) => {
if (code === 0) resolve();
else reject(new Error(`tmux attach exited with code ${code}`));
});
});
}
return SESSION;
}