chore: attach when starting relay tmux session
This commit is contained in:
@@ -253,11 +253,17 @@ With Tailscale:
|
|||||||
|
|
||||||
program
|
program
|
||||||
.command("relay:tmux")
|
.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 () => {
|
.action(async () => {
|
||||||
try {
|
try {
|
||||||
const session = await spawnRelayTmux();
|
const session = await spawnRelayTmux("pnpm warelay relay --verbose", true);
|
||||||
defaultRuntime.log(info(`tmux session started: ${session} (pane running "pnpm warelay relay --verbose")`));
|
defaultRuntime.log(
|
||||||
|
info(
|
||||||
|
`tmux session started and attached: ${session} (pane running "pnpm warelay relay --verbose")`,
|
||||||
|
),
|
||||||
|
);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
defaultRuntime.error(danger(`Failed to start relay tmux session: ${String(err)}`));
|
defaultRuntime.error(danger(`Failed to start relay tmux session: ${String(err)}`));
|
||||||
defaultRuntime.exit(1);
|
defaultRuntime.exit(1);
|
||||||
|
|||||||
@@ -2,7 +2,10 @@ import { spawn } from "node:child_process";
|
|||||||
|
|
||||||
const SESSION = "warelay-relay";
|
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 killSession(SESSION);
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
const child = spawn("tmux", ["new", "-d", "-s", SESSION, cmd], {
|
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}`));
|
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;
|
return SESSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user