sbt/ivy/ConflictWarning.scala

25 lines
1014 B
Scala
Raw Normal View History

package sbt
import DependencyFilter._
final case class ConflictWarning(label: String, filter: ModuleFilter, group: ModuleID => String, level: Level.Value, failOnConflict: Boolean)
object ConflictWarning
{
def default(label: String): ConflictWarning = ConflictWarning(label, moduleFilter(organization = GlobFilter(SbtArtifacts.Organization) | GlobFilter(ScalaArtifacts.Organization)), (_: ModuleID).organization, Level.Warn, false)
def apply(config: ConflictWarning, report: UpdateReport, log: Logger)
{
val conflicts = IvyActions.groupedConflicts(config.filter, config.group)(report)
if(!conflicts.isEmpty)
2011-07-28 01:50:58 +02:00
{
val msg = "Potentially incompatible versions of dependencies of " + config.label + ":\n "
2011-07-28 01:50:58 +02:00
val conflictMsgs =
for( (label, versions) <- conflicts ) yield
label + ": " + versions.mkString(", ")
log.log(config.level, conflictMsgs.mkString(msg, "\n ", ""))
2011-07-28 01:50:58 +02:00
}
if(config.failOnConflict && !conflicts.isEmpty)
error("Conflicts in " + conflicts.map(_._1).mkString )
}
}