dry4rust/cli/
report_command.rs1use crate::analysis::AnalysisResult;
7use crate::cli::cli_error::CliResult;
8use crate::cli::command_outcome::CommandOutcome;
9use crate::output::report::Report;
10use crate::output::reporter::Reporter;
11
12pub struct ReportCommand<'a> {
19 result: &'a AnalysisResult,
20 reporter: &'a dyn Reporter,
21}
22
23impl<'a> ReportCommand<'a> {
24 #[must_use]
25 pub const fn new(result: &'a AnalysisResult, reporter: &'a dyn Reporter) -> Self {
26 Self { result, reporter }
27 }
28
29 pub fn run(&self) -> CliResult<CommandOutcome> {
35 let text = self.reporter.report(&Report {
36 stats: &self.result.stats,
37 exact: &self.result.exact_groups,
38 near: &self.result.near_groups,
39 sub_exact: &self.result.sub_exact_groups,
40 sub_near: &self.result.sub_near_groups,
41 })?;
42 Ok(CommandOutcome::succeeded(text))
43 }
44}