import { Command } from 'commander'
import { logger, type LogLevel } from '../../core/logger.ts'
import { startDaemon } from '../../daemon/index.ts'

type DaemonOptions = {
  port?: string
  logLevel?: LogLevel
}

export const daemonCommand = new Command('daemon')
  .description('Run the OpenThomas daemon in the foreground. Used by launchd/systemd.')
  .option('--port <port>', 'Override default port 9877.')
  .option('--log-level <level>', "'silent' | 'error' | 'warn' | 'info' | 'debug'")
  .action(async (options: DaemonOptions) => {
    if (options.logLevel) logger.setLevel(options.logLevel)
    const port = options.port ? Number.parseInt(options.port, 10) : undefined
    await startDaemon({ port })
  })
