use anyhow::Result;
use clap::Parser;
use std::{fs, path::PathBuf};
#[derive(Parser, Debug)]
#[command(version, about = "Generate JSON from .jgd definitions")]
struct Cli {
input: PathBuf,
#[arg(short, long)]
out: Option<PathBuf>,
#[arg(long)]
seed: Option<u64>,
#[arg(short, long)]
pretty: bool,
}
fn main() -> Result<()> {
let cli = Cli::parse();
let generated = jgd_rs::generate_jgd_from_file(&cli.input);
if let Err(error) = generated {
eprintln!("{}", error);
return Ok(());
}
let generated = generated.unwrap();
let serialized = if cli.pretty {
serde_json::to_string_pretty(&generated).unwrap()
} else {
serde_json::to_string(&generated).unwrap()
};
if let Some(path) = cli.out {
fs::write(path, serialized)?;
} else {
println!("{}", serialized);
}
Ok(())
}