Skip to content

Commit

Permalink
Reduce switch statements in DependencyCheckReport
Browse files Browse the repository at this point in the history
We can reduce switch statements, and line count a little bit too, if
we use a `Map[IncompatibilityType, ...]` rather than two separate
`binaryCompatibilityReport` & `sourceCompatibilityReport` fields.

This is proposed change for
#184
  • Loading branch information
rtyley authored and julienrf committed Nov 29, 2023
1 parent 700cfa1 commit f9fc70e
Showing 1 changed file with 9 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,15 @@ import coursier.version.{ModuleMatchers, Version, VersionCompatibility}
import lmcoursier.definitions.{ModuleMatchers => *, *}

case class DependencyCheckReport(
binaryCompatibilityReport: Map[(String, String), DependencyCheckReport.ModuleStatus],
sourceCompatibilityReport: Map[(String, String), DependencyCheckReport.ModuleStatus]
compatibilityReports: Map[IncompatibilityType, Map[(String, String), DependencyCheckReport.ModuleStatus]]
) {

def validated(incompatibilityType: IncompatibilityType): Boolean =
incompatibilityType match {
case IncompatibilityType.BinaryIncompatibility => binaryCompatibilityReport.forall(_._2.validated)
case IncompatibilityType.SourceIncompatibility => sourceCompatibilityReport.forall(_._2.validated)
}
compatibilityReports(incompatibilityType).forall(_._2.validated)

def errors(incompatibilityType: IncompatibilityType, ignored: Set[(String, String)] = Set.empty): (Seq[String], Seq[String]) = {

val relevantErrors =
incompatibilityType match {
case IncompatibilityType.BinaryIncompatibility => binaryCompatibilityReport
case IncompatibilityType.SourceIncompatibility => sourceCompatibilityReport
}
val relevantErrors = compatibilityReports(incompatibilityType)

val baseErrors = relevantErrors
.filter(!_._2.validated)
Expand Down Expand Up @@ -72,12 +64,13 @@ object DependencyCheckReport {
defaultReconciliation: VersionCompatibility
): DependencyCheckReport = {

val binaryCompatibilityReport =
moduleStatuses(Compatibility.BinaryCompatible, currentModules, previousModules, reconciliations, defaultReconciliation)
val sourceCompatibilityReport =
moduleStatuses(Compatibility.BinaryAndSourceCompatible, currentModules, previousModules, reconciliations, defaultReconciliation)
def report(compatibility: Compatibility) =
moduleStatuses(compatibility, currentModules, previousModules, reconciliations, defaultReconciliation)

DependencyCheckReport(binaryCompatibilityReport, sourceCompatibilityReport)
DependencyCheckReport(Map(
IncompatibilityType.BinaryIncompatibility -> report(Compatibility.BinaryCompatible),
IncompatibilityType.SourceIncompatibility -> report(Compatibility.BinaryAndSourceCompatible)
))
}

@deprecated("This method is internal.", "1.1.0")
Expand Down

0 comments on commit f9fc70e

Please sign in to comment.