pub(crate) fn run_validate(path: Option<std::path::PathBuf>) -> anyhow::Result<()> {
use std::io::Write;
let root = crate::root::find(path, &crate::root::default_markers())?;
let mut findings = crate::integrity::id_integrity_findings(&root)?;
findings.extend(crate::relation_graph::validate_relations(&root)?);
writeln!(
std::io::stdout(),
"validate: scanned {}",
crate::integrity::scanned_kinds()
)?;
if findings.is_empty() {
writeln!(std::io::stdout(), "validate: corpus clean")?;
return Ok(());
}
for f in &findings {
writeln!(std::io::stdout(), " {f}")?;
}
anyhow::bail!("validate: {} finding(s)", findings.len())
}