use genie::scx::{convert::AutoToWK, VersionBundle};
use genie::Scenario;
use std::{fs::File, path::PathBuf};
use structopt::StructOpt;
#[derive(Debug, StructOpt)]
struct Cli {
#[structopt(parse(from_os_str))]
input: PathBuf,
#[structopt(parse(from_os_str))]
output: PathBuf,
version: Option<String>,
}
fn main() -> anyhow::Result<()> {
let Cli {
input,
output,
version,
} = Cli::from_args();
let version_arg = version;
let version = match version_arg.as_ref().map(|s| &**s) {
Some("aoe") => VersionBundle::aoe(),
Some("ror") => VersionBundle::ror(),
Some("aoc") => VersionBundle::aoc(),
Some("hd") => VersionBundle::hd_edition(),
Some("wk") => VersionBundle::userpatch_15(),
Some(name) => panic!("unknown version {}", name),
_ => VersionBundle::aoc(),
};
let instream = File::open(input)?;
let mut scen = Scenario::read_from(instream)?;
if version_arg == Some("wk".to_string()) {
println!("Applying WololoKingdoms conversion...");
let converter = AutoToWK::default();
converter.convert(&mut scen)?;
}
let outstream = File::create(output)?;
scen.write_to_version(outstream, &version)?;
println!("Conversion complete!");
Ok(())
}