Files
openwork/packages/server/src/cli.ts
2026-02-04 12:54:08 -08:00

49 lines
1.5 KiB
TypeScript

#!/usr/bin/env bun
import { parseCliArgs, printHelp, resolveServerConfig } from "./config.js";
import { createServerLogger, startServer } from "./server.js";
import pkg from "../package.json" with { type: "json" };
const args = parseCliArgs(process.argv.slice(2));
if (args.help) {
printHelp();
process.exit(0);
}
if (args.version) {
console.log(pkg.version);
process.exit(0);
}
const config = await resolveServerConfig(args);
const logger = createServerLogger(config);
const server = startServer(config);
const url = `http://${config.host}:${server.port}`;
logger.log("info", `OpenWork server listening on ${url}`);
if (config.tokenSource === "generated") {
logger.log("info", `Client token: ${config.token}`);
}
if (config.hostTokenSource === "generated") {
logger.log("info", `Host token: ${config.hostToken}`);
}
if (config.workspaces.length === 0) {
logger.log("info", "No workspaces configured. Add --workspace or update server.json.");
} else {
logger.log("info", `Workspaces: ${config.workspaces.length}`);
}
if (args.verbose) {
logger.log("info", `Config path: ${config.configPath ?? "unknown"}`);
logger.log("info", `Read-only: ${config.readOnly ? "true" : "false"}`);
logger.log("info", `Approval: ${config.approval.mode} (${config.approval.timeoutMs}ms)`);
logger.log("info", `CORS origins: ${config.corsOrigins.join(", ")}`);
logger.log("info", `Authorized roots: ${config.authorizedRoots.join(", ")}`);
logger.log("info", `Token source: ${config.tokenSource}`);
logger.log("info", `Host token source: ${config.hostTokenSource}`);
}