extern crate serde;
extern crate serde_any;
extern crate serde_value;
#[macro_use]
extern crate structopt;
extern crate failure;
use structopt::StructOpt;
use std::path::PathBuf;
#[derive(StructOpt, Clone, Debug)]
struct Opt {
#[structopt(short = "i", long = "input", parse(from_os_str))]
input: PathBuf,
#[structopt(short = "o", long = "output", parse(from_os_str))]
output: PathBuf,
#[structopt(short = "p", long = "pretty")]
pretty: bool,
}
fn main() -> Result<(), failure::Error> {
let opt = Opt::from_args();
println!(
"Transcoding from '{}' to '{}'",
opt.input.display(),
opt.output.display()
);
let value: serde_value::Value = serde_any::from_file(&opt.input)?;
if opt.pretty {
serde_any::to_file_pretty(&opt.output, &value)?;
} else {
serde_any::to_file(&opt.output, &value)?;
}
Ok(())
}