use std::path::PathBuf;
use std::process::ExitCode;
use clap::Parser;
use elm_client_gen_cli::{run_codegen, CodegenOptions, CodegenOutcome};
use elm_client_gen_core::registered_types;
#[derive(Parser)]
#[command(name = "elm-client-gen", about)]
struct Cli {
#[arg(short, long)]
output: PathBuf,
#[arg(short, long)]
types: Vec<String>,
#[arg(long)]
dry_run: bool,
}
fn main() -> ExitCode {
let cli = Cli::parse();
let options = CodegenOptions {
output: cli.output,
filter_names: &cli.types,
dry_run: cli.dry_run,
};
match run_codegen(registered_types(), options) {
Ok(CodegenOutcome::DryRun(output)) => {
print!("{output}");
ExitCode::SUCCESS
}
Ok(CodegenOutcome::Wrote { module_count, root }) => {
println!(
"Generated {} type modules in {}",
module_count,
root.display()
);
ExitCode::SUCCESS
}
Err(err) => {
eprintln!("{err}");
ExitCode::FAILURE
}
}
}