diff options
Diffstat (limited to 'src/bin/obnam-benchmark.rs')
-rw-r--r-- | src/bin/obnam-benchmark.rs | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/src/bin/obnam-benchmark.rs b/src/bin/obnam-benchmark.rs index 4f2a9ed..617a0a3 100644 --- a/src/bin/obnam-benchmark.rs +++ b/src/bin/obnam-benchmark.rs @@ -1,12 +1,35 @@ use obnam_benchmark::Specification; +use std::fs::File; +use std::path::PathBuf; +use std::process::exit; +use structopt::StructOpt; + +#[derive(Debug, StructOpt)] +struct Opt { + #[structopt(parse(from_os_str))] + spec: PathBuf, + + #[structopt(long, parse(from_os_str))] + output: PathBuf, +} fn main() { - let yaml = r#" -benchmarks: -- benchmark: foo - backups: [] -"#; - let spec: Specification = serde_yaml::from_str(yaml).unwrap(); - serde_json::to_writer(std::io::stdout(), &spec).unwrap(); - println!(); + if let Err(err) = real_main() { + eprintln!("ERROR: {}", err); + exit(1); + } +} + +fn real_main() -> anyhow::Result<()> { + let opt = Opt::from_args(); + + println!("reading {}", opt.spec.display()); + let input = File::open(&opt.spec)?; + let spec: Specification = serde_yaml::from_reader(&input)?; + + println!("writing {}", opt.output.display()); + let output = File::create(&opt.output)?; + serde_json::to_writer(&output, &spec)?; + + Ok(()) } |