in resctl-bench/src/main.rs [187:233]
fn do_format(&mut self, opts: &FormatOpts) {
let specs = &self.args_file.data.job_specs;
let empty_props = vec![Default::default()];
let mut to_format = vec![];
let mut jctxs = JobCtxs::default();
std::mem::swap(&mut jctxs, &mut self.jobs.lock().unwrap());
if specs.len() == 0 {
to_format = jctxs.vec.into_iter().map(|x| (x, &empty_props)).collect();
} else {
for spec in specs.iter() {
let jctx = match jctxs.pop_matching_jctx(&spec) {
Some(v) => v,
None => {
error!("No matching result for {}", &spec);
exit(1);
}
};
let desc = jctx.bench.as_ref().unwrap().desc();
if !desc.takes_format_props && spec.props[0].len() > 0 {
error!(
"Unknown properties specified for formatting {}",
&jctx.data.spec
);
exit(1);
}
if !desc.takes_format_propsets && spec.props.len() > 1 {
error!(
"Multiple property sets not supported for formatting {}",
&jctx.data.spec
);
exit(1);
}
to_format.push((jctx, &spec.props));
}
}
for (jctx, props) in to_format.iter() {
if let Err(e) = jctx.print(opts, props) {
error!("Failed to format {}: {:#}", &jctx.data.spec, &e);
panic!();
}
}
self.commit_args();
}