use std::io::Write;
use crate::analysis::AnalysisResult;
use crate::cli::cli_error::CliResult;
use crate::output::report::Report;
use crate::output::reporter::Reporter;
pub struct ReportCommand<'a> {
result: &'a AnalysisResult,
reporter: &'a dyn Reporter,
}
impl<'a> ReportCommand<'a> {
#[must_use]
pub const fn new(result: &'a AnalysisResult, reporter: &'a dyn Reporter) -> Self {
Self { result, reporter }
}
pub fn run(&self, writer: &mut impl Write) -> CliResult {
self.reporter.report(
&Report {
stats: &self.result.stats,
exact: &self.result.exact_groups,
near: &self.result.near_groups,
sub_exact: &self.result.sub_exact_groups,
sub_near: &self.result.sub_near_groups,
},
writer,
)?;
Ok(())
}
}