runStart
uses process
Runs tcm start.
import { routeStart } from "#codebase/tcmts/cli/commands"; import { execute } from "#codebase/tcmts/cli/main"; import type { Context } from "#codebase/tcmts/cli/run"; import { tlsMaterial } from "#codebase/tcmts/cli/sync"; import { chooseName } from "#codebase/tcmts/cli/ui"; import { parseHttpFlag, start } from "#codebase/tcmts/cli/web"; import { parse } from "@bomb.sh/router"; export async function runStart({ cb, cmd, rest }: Context): Promise<number> { // started by another tcm, to end with it (`tcm serve`'s web UI): however that one ends, a signal or a kill that // skips its exit handlers too, this one is given to another parent, and stops if (process.env.TCM_STOP_WITH_PARENT) { delete process.env.TCM_STOP_WITH_PARENT; const parent = process.ppid; setInterval(() => { if (process.ppid !== parent) process.exit(0); }, 500).unref(); } const { model } = execute(cmd, parse(routeStart(), { argv: rest })); const app = model.app ?? (await chooseName(cb, "start <app> [--port 8080]", "Which app?", "value")); const tls = model.tls || model["tls-cert"] ? tlsMaterial(cb, model["tls-cert"], model["tls-key"]) : undefined; await start(cb, app, { port: model.port, host: model.host, tls, keep: model.keep, http: model.http === undefined ? undefined : parseHttpFlag(model.http), base: model.base ?? undefined, }); return -1; // keep serving }
uses
- tcmts.cli.commands.routeStart
- tcmts.cli.main.execute
- tcmts.cli.run.Context
- tcmts.cli.sync.tlsMaterial
- tcmts.cli.ui.chooseName
- tcmts.cli.web.parseHttpFlag
- tcmts.cli.web.start