use batuta::comply::{ComplyConfig, ComplyReportFormat, StackComplyEngine};
use std::path::Path;
fn main() -> anyhow::Result<()> {
println!("=== Stack Compliance Demo ===\n");
println!("1. Creating compliance engine");
let config = ComplyConfig::default();
let engine = StackComplyEngine::new(config);
println!("\n2. Available compliance rules:");
for (id, description) in engine.available_rules() {
println!(" • {} - {}", id, description);
}
println!("\n3. Discovering projects in current workspace");
let mut engine = StackComplyEngine::default_for_workspace(Path::new("."));
let projects = engine.discover_projects(Path::new("."))?;
println!(" Found {} projects", projects.len());
for project in projects {
let paiml_marker = if project.is_paiml_crate { " [PAIML]" } else { "" };
println!(" • {}{}", project.name, paiml_marker);
}
println!("\n4. Running compliance checks");
let report = engine.check_all();
println!("\n5. Compliance Report Summary:");
println!(" Pass rate: {:.1}%", report.summary.pass_rate);
println!(" Total checks: {}", report.summary.total_checks);
println!(" Passed: {}", report.summary.passed_checks);
println!(" Failed: {}", report.summary.failed_checks);
println!("\n6. Text Report:");
println!("{}", report.format(ComplyReportFormat::Text));
println!("\n7. Rule Categories:");
println!(" • makefile-targets: Ensures Makefile target consistency");
println!(" • cargo-toml-consistency: Validates Cargo.toml parity");
println!(" • ci-workflow-parity: Checks CI workflow alignment");
println!(" • code-duplication: Detects duplicates via MinHash+LSH");
println!("\n=== Demo Complete ===");
println!("Use 'batuta stack comply --help' for CLI usage.");
Ok(())
}