36 lines · 1.3 KB · TypeScript
RawDownload
import * as Effect from "effect/Effect";import { Command, GlobalFlag } from "effect/unstable/cli"; import { ServerConfig, type StartupPresentation } from "../config.ts";import { runServer } from "../server.ts";import { type CliServerFlags, resolveServerConfig, sharedServerCommandFlags } from "./config.ts"; export const runServerCommand = (  flags: CliServerFlags,  options?: {    readonly startupPresentation?: StartupPresentation;    readonly forceAutoBootstrapProjectFromCwd?: boolean;  },) =>  Effect.gen(function* () {    const logLevel = yield* GlobalFlag.LogLevel;    const config = yield* resolveServerConfig(flags, logLevel, options);    return yield* runServer.pipe(Effect.provideService(ServerConfig, config));  }); export const startCommand = Command.make("start", { ...sharedServerCommandFlags }).pipe(  Command.withDescription("Run the T3 Code server."),  Command.withHandler((flags) => runServerCommand(flags)),); export const serveCommand = Command.make("serve", { ...sharedServerCommandFlags }).pipe(  Command.withDescription(    "Run the T3 Code server without opening a browser and print headless pairing details.",  ),  Command.withHandler((flags) =>    runServerCommand(flags, {      startupPresentation: "headless",      forceAutoBootstrapProjectFromCwd: false,    }),  ),);