mago_reporting/internal/emitter/
json.rs

1use termcolor::WriteColor;
2
3use mago_interner::ThreadedInterner;
4use mago_source::SourceManager;
5
6use crate::IssueCollection;
7use crate::Level;
8use crate::error::ReportingError;
9use crate::internal::Expandable;
10
11pub fn json_format(
12    writer: &mut dyn WriteColor,
13    sources: &SourceManager,
14    interner: &ThreadedInterner,
15    issues: IssueCollection,
16) -> Result<Option<Level>, ReportingError> {
17    let highest_level = issues.get_highest_level();
18    let issues = issues.expand(sources, interner)?;
19
20    serde_json::to_writer_pretty(writer, &issues)?;
21
22    Ok(highest_level)
23}