///|
let server_log_level_lens : @lens.PresenceLens[String] = @lens.root()
.string("logLevel")
.optional()
///|
priv struct ServerConfig {
log_level : String?
}
///|
impl FromJson for ServerConfig with fn from_json(json, _path) {
let log_level = server_log_level_lens.get(json) catch { _ => None }
{ log_level, }
}
///|
fn server_args(options : ServerOptions) -> Array[String] {
// Copied from the OpenCode TypeScript SDK argument construction:
// https://github.com/anomalyco/opencode/blob/66495a2a22cd0a57efcc4f721e65532f0987b4e8/packages/sdk/js/src/server.ts#L32-L33
let args = [
"serve",
"--hostname=\{options.hostname}",
"--port=\{options.port}",
]
let config : ServerConfig = @json.from_json(options.config) catch {
_ => { log_level: None }
}
match config.log_level {
Some(log_level) => args.push("--log-level=\{log_level}")
None => ()
}
args
}