serve: fold mdns domain into option

This commit is contained in:
Dax Raad 2026-05-16 00:51:18 -04:00
commit 3caba56bd9
4 changed files with 6 additions and 7 deletions

View file

@ -72,7 +72,7 @@ export const rpc = {
}, },
async server(input: { port: number; hostname: string; mdns?: boolean; cors?: string[] }) { async server(input: { port: number; hostname: string; mdns?: boolean; cors?: string[] }) {
if (server) await server.stop(true) if (server) await server.stop(true)
server = await Server.listen({ type: "tcp", ...input }) server = await Server.listen({ type: "tcp", ...input, mdns: input.mdns ? true : undefined })
return { url: server.url.toString() } return { url: server.url.toString() }
}, },
async checkUpgrade(input: { directory: string }) { async checkUpgrade(input: { directory: string }) {

View file

@ -67,7 +67,7 @@ export const WebCommand = effectCmd({
UI.println( UI.println(
UI.Style.TEXT_INFO_BOLD + " mDNS: ", UI.Style.TEXT_INFO_BOLD + " mDNS: ",
UI.Style.TEXT_NORMAL, UI.Style.TEXT_NORMAL,
`${opts.mdnsDomain}:${server.port}`, `${opts.mdns === true ? "opencode.local" : opts.mdns.domain}:${server.port}`,
) )
} }

View file

@ -47,7 +47,7 @@ export function resolveNetworkOptionsNoConfig(args: NetworkOptions, config?: Con
const mdnsExplicitlySet = process.argv.includes("--mdns") const mdnsExplicitlySet = process.argv.includes("--mdns")
const mdnsDomainExplicitlySet = process.argv.includes("--mdns-domain") const mdnsDomainExplicitlySet = process.argv.includes("--mdns-domain")
const mdns = mdnsExplicitlySet ? args.mdns : (config?.server?.mdns ?? args.mdns) const mdns = mdnsExplicitlySet ? args.mdns : (config?.server?.mdns ?? args.mdns)
const mdnsDomain = mdnsDomainExplicitlySet ? args["mdns-domain"] : (config?.server?.mdnsDomain ?? args["mdns-domain"]) const mdnsDomain = mdnsDomainExplicitlySet ? args["mdns-domain"] : config?.server?.mdnsDomain
const port = portExplicitlySet ? args.port : (config?.server?.port ?? args.port) const port = portExplicitlySet ? args.port : (config?.server?.port ?? args.port)
const hostname = hostnameExplicitlySet const hostname = hostnameExplicitlySet
? args.hostname ? args.hostname
@ -58,5 +58,5 @@ export function resolveNetworkOptionsNoConfig(args: NetworkOptions, config?: Con
const argsCors = Array.isArray(args.cors) ? args.cors : args.cors ? [args.cors] : [] const argsCors = Array.isArray(args.cors) ? args.cors : args.cors ? [args.cors] : []
const cors = [...configCors, ...argsCors] const cors = [...configCors, ...argsCors]
return { type: "tcp" as const, hostname, port, mdns, mdnsDomain, cors } return { type: "tcp" as const, hostname, port, mdns: mdns ? (mdnsDomain ? { domain: mdnsDomain } : true) : undefined, cors }
} }

View file

@ -45,8 +45,7 @@ export type TcpListenOptions = CorsOptions & {
type: "tcp" type: "tcp"
port: number port: number
hostname: string hostname: string
mdns?: boolean mdns?: true | { domain: string }
mdnsDomain?: string
} }
export type SocketListenOptions = CorsOptions & { export type SocketListenOptions = CorsOptions & {
@ -208,7 +207,7 @@ function setupMdns(opts: TcpListenOptions, port: number, scope: Scope.Scope) {
opts.mdns && port && opts.hostname !== "127.0.0.1" && opts.hostname !== "localhost" && opts.hostname !== "::1" opts.mdns && port && opts.hostname !== "127.0.0.1" && opts.hostname !== "localhost" && opts.hostname !== "::1"
if (publish) { if (publish) {
const unpublish = yield* Effect.cached(Effect.sync(() => MDNS.unpublish())) const unpublish = yield* Effect.cached(Effect.sync(() => MDNS.unpublish()))
yield* Effect.sync(() => MDNS.publish(port, opts.mdnsDomain)) yield* Effect.sync(() => MDNS.publish(port, opts.mdns === true ? undefined : opts.mdns.domain))
yield* Scope.addFinalizer(scope, unpublish) yield* Scope.addFinalizer(scope, unpublish)
return unpublish return unpublish
} }