mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-03-31 14:22:27 +00:00
54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import type { Argv, InferredOptionTypes } from "yargs"
|
|
import { Config } from "../config/config"
|
|
|
|
const options = {
|
|
port: {
|
|
type: "number" as const,
|
|
describe: "port to listen on",
|
|
default: 0,
|
|
},
|
|
hostname: {
|
|
type: "string" as const,
|
|
describe: "hostname to listen on",
|
|
default: "127.0.0.1",
|
|
},
|
|
mdns: {
|
|
type: "boolean" as const,
|
|
describe: "enable mDNS service discovery (defaults hostname to 0.0.0.0)",
|
|
default: false,
|
|
},
|
|
cors: {
|
|
type: "string" as const,
|
|
array: true,
|
|
describe: "additional domains to allow for CORS",
|
|
default: [] as string[],
|
|
},
|
|
}
|
|
|
|
export type NetworkOptions = InferredOptionTypes<typeof options>
|
|
|
|
export function withNetworkOptions<T>(yargs: Argv<T>) {
|
|
return yargs.options(options)
|
|
}
|
|
|
|
export async function resolveNetworkOptions(args: NetworkOptions) {
|
|
const config = await Config.global()
|
|
const portExplicitlySet = process.argv.includes("--port")
|
|
const hostnameExplicitlySet = process.argv.includes("--hostname")
|
|
const mdnsExplicitlySet = process.argv.includes("--mdns")
|
|
const corsExplicitlySet = process.argv.includes("--cors")
|
|
|
|
const mdns = mdnsExplicitlySet ? args.mdns : (config?.server?.mdns ?? args.mdns)
|
|
const port = portExplicitlySet ? args.port : (config?.server?.port ?? args.port)
|
|
const hostname = hostnameExplicitlySet
|
|
? args.hostname
|
|
: mdns && !config?.server?.hostname
|
|
? "0.0.0.0"
|
|
: (config?.server?.hostname ?? args.hostname)
|
|
const configCors = config?.server?.cors ?? []
|
|
const argsCors = Array.isArray(args.cors) ? args.cors : args.cors ? [args.cors] : []
|
|
const cors = [...configCors, ...argsCors]
|
|
|
|
return { hostname, port, mdns, cors }
|
|
}
|