use anyhow::{Result, bail};
pub use crate::client::support::args::{Cli, Commands};
pub async fn run_cli(cli: Cli) -> Result<()> {
match cli.command {
Some(Commands::Convert(args)) => {
crate::client::cli_impl::run_convert_command(args, cli.verbose, cli.quiet).await
}
Some(Commands::Check(args)) => {
crate::client::cli_impl::run_check_command(args, cli.verbose, cli.quiet).await
}
Some(Commands::Detect(args)) => {
crate::client::cli_impl::run_detect_command(args, cli.verbose, cli.quiet).await
}
Some(Commands::Health(args)) => {
crate::client::cli_impl::run_health_command(args, cli.quiet).await
}
Some(Commands::Proxy(args)) => {
super::proxy_server::run_proxy_command(args, cli.verbose, cli.quiet).await
}
None => {
if let Some(url) = cli.url {
let args = crate::client::support::args::ConvertArgs {
url: Some(url),
config: None,
config_file: None,
name: None,
protocol: None,
auth: None,
header: vec![],
retries: 0, allow_tools: None,
deny_tools: None,
ping_interval: 30, ping_timeout: 10, import_initialize: None,
import_initialize_file: None,
import_tools: None,
import_tools_file: None,
export_initialize: None,
export_tools: None,
logging: crate::client::support::LoggingArgs {
diagnostic: true, log_dir: None, log_file: None, otlp_endpoint: None, service_name: "mcp-proxy".to_string(),
},
};
crate::client::cli_impl::run_convert_command(args, cli.verbose, cli.quiet).await
} else {
bail!("请提供 URL 或使用子命令")
}
}
}
}