use clap::{Parser, Subcommand};
use std::path::PathBuf;
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Cli {
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
GenerateServer {
#[arg(short, long)]
name: String,
#[arg(short, long, default_value = ".")]
output: String,
},
GenerateClient {
#[arg(short, long)]
name: String,
#[arg(short, long, default_value = ".")]
output: String,
},
RunServer {
#[arg(short, long)]
path: String,
},
Connect {
#[arg(short, long)]
uri: String,
},
Validate {
#[arg(short, long)]
path: String,
},
}
fn main() {
let cli = Cli::parse();
match &cli.command {
Commands::GenerateServer { name, output } => {
println!("Generating server stub '{}' in '{}'", name, output);
let output_path = PathBuf::from(output);
match mcpr::generator::generate_server(name, &output_path) {
Ok(_) => {
println!("Server stub generated successfully!");
}
Err(e) => {
eprintln!("Error generating server stub: {}", e);
std::process::exit(1);
}
}
}
Commands::GenerateClient { name, output } => {
println!("Generating client stub '{}' in '{}'", name, output);
let output_path = PathBuf::from(output);
match mcpr::generator::generate_client(name, &output_path) {
Ok(_) => {
println!("Client stub generated successfully!");
}
Err(e) => {
eprintln!("Error generating client stub: {}", e);
std::process::exit(1);
}
}
}
Commands::RunServer { path } => {
println!("Running server from '{}'", path);
println!("Server runner not yet implemented");
}
Commands::Connect { uri } => {
println!("Connecting to server at '{}'", uri);
println!("Client connection not yet implemented");
}
Commands::Validate { path } => {
println!("Validating message from '{}'", path);
println!("Message validation not yet implemented");
}
}
}