feat: add relay:tmux:attach to join existing session
parent
072998a6ab
commit
071786fe16
|
|
@ -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;
|
return program;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,19 +5,22 @@ const SESSION = "warelay-relay";
|
||||||
export async function spawnRelayTmux(
|
export async function spawnRelayTmux(
|
||||||
cmd = "pnpm warelay relay --verbose",
|
cmd = "pnpm warelay relay --verbose",
|
||||||
attach = true,
|
attach = true,
|
||||||
|
restart = true,
|
||||||
) {
|
) {
|
||||||
await killSession(SESSION);
|
if (restart) {
|
||||||
await new Promise<void>((resolve, reject) => {
|
await killSession(SESSION);
|
||||||
const child = spawn("tmux", ["new", "-d", "-s", SESSION, cmd], {
|
await new Promise<void>((resolve, reject) => {
|
||||||
stdio: "inherit",
|
const child = spawn("tmux", ["new", "-d", "-s", SESSION, cmd], {
|
||||||
shell: false,
|
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) {
|
if (attach) {
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue