diff options
author | Lars Wirzenius <liw@liw.fi> | 2022-01-16 10:02:03 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2022-01-16 10:02:03 +0000 |
commit | 93584ec7e8b774c19d6b9c2ebc64a4513a961d96 (patch) | |
tree | 7ff13c1cd7e04b47a6aa20c22953605bcb05d34e /src/bin/obnam-benchmark.rs | |
parent | 1ad4e5d867cf9b040de48371cce55bdb3ad001ea (diff) | |
parent | 8c799a2161d57f1b0f965ade59a8b7e690660cbe (diff) | |
download | obnam-benchmark-93584ec7e8b774c19d6b9c2ebc64a4513a961d96.tar.gz |
Merge branch 'fix-version-column' into 'main'
feat: allow report to write to named file
See merge request obnam/obnam-benchmark!13
Diffstat (limited to 'src/bin/obnam-benchmark.rs')
-rw-r--r-- | src/bin/obnam-benchmark.rs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/bin/obnam-benchmark.rs b/src/bin/obnam-benchmark.rs index 8b75229..37972f5 100644 --- a/src/bin/obnam-benchmark.rs +++ b/src/bin/obnam-benchmark.rs @@ -90,8 +90,9 @@ impl Run { let spec = Specification::from_file(&self.spec)?; let builder = ObnamBuilder::new(&self.obnam)?; let obnam_version = builder.version()?; + let obnam_commit = builder.commit(); let mut suite = Suite::new(&builder)?; - let mut result = SuiteMeasurements::new(obnam_version)?; + let mut result = SuiteMeasurements::new(obnam_version, obnam_commit)?; for step in spec.steps().iter() { result.push(suite.execute(step)?); } @@ -182,6 +183,10 @@ impl Steps { #[derive(Debug, StructOpt)] struct Report { + /// File where to write the report. Stdout by default. + #[structopt(short, long, parse(from_os_str))] + output: Option<PathBuf>, + /// Names of the results file for which to produce a report. #[structopt(parse(from_os_str))] filenames: Vec<PathBuf>, @@ -190,11 +195,16 @@ struct Report { impl Report { fn run(&self) -> anyhow::Result<()> { info!("Reporting results"); - let mut report = Reporter::default(); + let mut reporter = Reporter::default(); for filename in self.filenames.iter() { - report.push(SuiteMeasurements::from_file(filename)?); + reporter.push(SuiteMeasurements::from_file(filename)?); + } + if let Some(output) = &self.output { + let mut file = File::create(output)?; + reporter.write(&mut file)?; + } else { + reporter.write(&mut std::io::stdout())?; } - report.write(&mut std::io::stdout())?; Ok(()) } } |