mod github_actions;
mod json;
mod sarif;
mod terminal;
pub use github_actions::GithubActionsRenderer;
pub use json::JsonRenderer;
pub use sarif::SarifRenderer;
pub use terminal::TerminalRenderer;
use crate::domain::report::AnalysisReport;
use crate::domain::request::OutputFormat;
use crate::ports::outbound::DiagnosticRenderer;
pub fn render_report(report: &AnalysisReport, format: OutputFormat) -> Result<String, String> {
let renderer: Box<dyn DiagnosticRenderer> = match format {
OutputFormat::Terminal => Box::new(TerminalRenderer),
OutputFormat::Json => Box::new(JsonRenderer),
OutputFormat::Sarif => Box::new(SarifRenderer),
OutputFormat::GithubActions => Box::new(GithubActionsRenderer),
};
renderer.render(report)
}