in multiversion/src/main/scala/multiversion/commands/LintCommand.scala [113:144]
private def writeLintReport(conflicts: List[LintDiagnostic], path: Option[Path]): Unit =
path
.foreach { out =>
val grouped = conflicts.groupBy(_.target).toList.sortBy(_._1)
val docs = grouped.map { case (target, conflicts) =>
val isFailure = conflicts.exists(!_.isPending)
val moduleVersions = conflicts
.sortBy(_.module.repr)
.map { case LintDiagnostic(_, module, _, versions, _) =>
Docs.obj(
List(
"dependency" -> Docs.literal(module.repr),
"versions" -> Docs.array(versions.sorted: _*)
)
)
}
Docs.dash + Doc.space + Docs.obj(
List(
"target" -> Docs.literal(target),
"failure" -> Doc.str(isFailure),
"conflicts" -> (Docs.openBracket + Doc
.intercalate(Doc.comma + Doc.space, moduleVersions) + Docs.closeBracket)
)
)
}
val rendered = Doc.intercalate(Doc.line, docs).render(Int.MaxValue)
if (out.toString() == "-") {
writeToStdout(rendered)
} else {
writeToFile(rendered, out)
}
}