use clap::Parser;
use serde::{Deserialize, Serialize};
#[derive(clap::ValueEnum, Debug, Default, Clone, Copy, PartialEq, Eq)]
pub enum LogLevel {
Trace,
Debug,
#[default]
Info,
Warn,
Error,
}
impl LogLevel {
pub fn as_filter(self) -> &'static str {
match self {
LogLevel::Trace => "trace",
LogLevel::Debug => "debug",
LogLevel::Info => "info",
LogLevel::Warn => "warn",
LogLevel::Error => "error",
}
}
}
#[derive(Parser, Debug, Clone)]
pub struct CommonCli {
#[arg(long, value_name = "PATH")]
pub port: Option<String>,
#[arg(long, default_value = "info")]
pub log_level: LogLevel,
#[arg(long, default_value = "stdio")]
pub transport: McpTransport,
}
#[derive(clap::ValueEnum, Debug, Clone, Serialize, Deserialize)]
pub enum McpTransport {
Stdio,
Tcp,
Ws,
}