use clap::Parser;
#[derive(Parser)]
#[command(
name = "mandolin",
about = "Generate server code from OpenAPI specification"
)]
struct Args {
#[arg(short, long)]
input: String,
#[arg(short, long)]
output: Option<String>,
#[arg(short, long, default_value = "RUST_AXUM")]
template: String,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Args::parse();
let api = if args.input == "-" {
mandolin::openapi_loader::openapi_load(std::io::stdin())
} else {
mandolin::openapi_loader::openapi_load(std::fs::File::open(&args.input)?)
}?;
let env = mandolin::environment(api)?;
let template = env.get_template(&args.template)?;
let output = template.render(0)?;
if let Some(path) = args.output {
std::fs::write(&path, &output)?;
} else {
print!("{}", output);
}
Ok(())
}