///|
/// 沐澜水文 backend 入口 - V0.9
///
/// CLI子命令分发器。当前MoonBit标准库暂无argv/env模块,
/// 默认运行demo子命令。dispatch函数已就绪,待argv支持后接入。
///
/// 可用子命令(20个功能命令 + help): demo, sim, calibrate, dds, validate, batch,
///   ensemble, uncertainty, sensitivity, swe, coupling,
///   timeseries, metrics, json, bench, persistence, auth,
///   ai_forecast, gis, flood, help
fn main raise {
  // T58修复:从命令行参数获取子命令,无参数时默认demo
  let args = @env.args()
  let cmd = if args.length() > 1 { args[1] } else { "demo" }
  dispatch(cmd)
}

///|
/// 子命令分发器:根据命令名调用对应子命令
fn dispatch(cmd : String) -> Unit raise {
  match cmd {
    "demo" => cli_demo()
    "sim" => print_cli_result(cli_sim())
    "calibrate" => print_cli_result(cli_calibrate())
    "dds" => print_cli_result(cli_dds())
    "validate" => print_cli_result(cli_validate())
    "batch" => print_cli_result(cli_batch())
    "ensemble" => print_cli_result(cli_ensemble())
    "uncertainty" => print_cli_result(cli_uncertainty())
    "sensitivity" => print_cli_result(cli_sensitivity())
    "swe" => print_cli_result(cli_swe())
    "coupling" => print_cli_result(cli_coupling())
    "timeseries" => print_cli_result(cli_timeseries())
    "metrics" => print_cli_result(cli_metrics())
    "json" => print_cli_result(cli_json())
    "bench" => print_cli_result(cli_bench())
    "persistence" => print_cli_result(cli_persistence())
    "auth" => print_cli_result(cli_auth())
    "ai_forecast" => print_cli_result(cli_ai_forecast())
    "gis" => print_cli_result(cli_gis())
    "flood" => print_cli_result(cli_flood())
    "help" => cli_help()
    _ => {
      println("未知子命令: \{cmd}")
      cli_help()
    }
  }
}