///|
/// CLI entry point. Run `moon run cmd/main` to start the MCP server.
fn main {
let args = @sys.get_cli_args()
if should_start_server(args) {
@server.run()
} else {
dispatch_cli_or_server(args)
}
}
///|
/// native target 下执行 CLI 子命令并退出;其他 target 回退到启动 MCP 服务器。
#cfg(target="native")
fn dispatch_cli_or_server(args : Array[String]) -> Unit {
let code = run_cli(args)
@sys.exit(code)
}
///|
#cfg(any(target="wasm", target="wasm-gc", target="js"))
fn dispatch_cli_or_server(args : Array[String]) -> Unit {
let _ = args
@server.run()
}
///|
/// Determine whether the program should start the MCP server from the
/// command-line argument list.
pub fn should_start_server(args : Array[String]) -> Bool {
let mut i = 1
while i < args.length() {
let arg = args[i]
if arg == "--help" || arg == "--version" {
return false
}
if arg == "--lang" {
i += 2
continue
}
if arg == "--no-prefix" {
i += 1
continue
}
if arg.has_prefix("-") {
return false
}
return false
}
true
}