use std::path::Path;
use anyhow::Result;
mod discovery;
mod markdown;
mod model;
pub fn render(
criterion_dir: impl AsRef<Path>,
allowlist: impl IntoIterator<Item = impl AsRef<str>>,
) -> Result<String> {
let criterion_dir = criterion_dir.as_ref();
let mut entries = discovery::discover_benchmarks(criterion_dir)?;
let names: Vec<String> = allowlist
.into_iter()
.map(|n| n.as_ref().to_string())
.collect();
if !names.is_empty() {
entries.retain(|e| names.iter().any(|n| n == &e.full_id));
}
if entries.is_empty() {
anyhow::bail!("No benchmark results found in {}", criterion_dir.display());
}
Ok(markdown::format_table(&entries))
}