diff --git a/src/main/scala/net/virtualvoid/sbt/graph/DependencyGraphSettings.scala b/src/main/scala/net/virtualvoid/sbt/graph/DependencyGraphSettings.scala
index 369c7f3dc..2bf7a13b6 100644
--- a/src/main/scala/net/virtualvoid/sbt/graph/DependencyGraphSettings.scala
+++ b/src/main/scala/net/virtualvoid/sbt/graph/DependencyGraphSettings.scala
@@ -21,7 +21,6 @@ import scala.language.reflectiveCalls
import sbt._
import Keys._
import sbt.complete.Parser
-import org.apache.ivy.core.resolve.ResolveOptions
import net.virtualvoid.sbt.graph.backend.{ IvyReport, SbtUpdateReport }
import net.virtualvoid.sbt.graph.rendering.{ AsciiGraph, DagreHTML }
import net.virtualvoid.sbt.graph.util.IOUtil
@@ -34,11 +33,16 @@ object DependencyGraphSettings {
import DependencyGraphKeys._
import ModuleGraphProtocol._
- def graphSettings = Seq(
+ def graphSettings = baseSettings ++ reportSettings
+
+ def baseSettings = Seq(
ivyReportFunction := ivyReportFunctionTask.value,
updateConfiguration in ignoreMissingUpdate := updateConfiguration.value.withMissingOk(true),
ignoreMissingUpdate := DependencyGraphSbtCompat.updateTask(ignoreMissingUpdate).value,
- filterScalaLibrary in Global := true) ++ Seq(Compile, Test, IntegrationTest, Runtime, Provided, Optional).flatMap(ivyReportForConfig)
+ filterScalaLibrary in Global := true)
+
+ def reportSettings =
+ Seq(Compile, Test, IntegrationTest, Runtime, Provided, Optional).flatMap(ivyReportForConfig)
def ivyReportForConfig(config: Configuration) = inConfig(config)(Seq(
ivyReport := { Def.task { ivyReportFunction.value.apply(config.toString) } dependsOn (ignoreMissingUpdate) }.value,
@@ -78,11 +82,12 @@ object DependencyGraphSettings {
},
dependencyList := printFromGraph(rendering.FlatList.render(_, _.id.idString)).value,
dependencyStats := printFromGraph(rendering.Statistics.renderModuleStatsList).value,
- dependencyDotHeader := """digraph "dependency-graph" {
- | graph[rankdir="LR"]
- | edge [
- | arrowtail="none"
- | ]""".stripMargin,
+ dependencyDotHeader :=
+ """|digraph "dependency-graph" {
+ | graph[rankdir="LR"]
+ | edge [
+ | arrowtail="none"
+ | ]""".stripMargin,
dependencyDotNodeLabel := { (organisation: String, name: String, version: String) ⇒
"""%s
%s
%s""".format(organisation, name, version)
},
@@ -93,22 +98,14 @@ object DependencyGraphSettings {
licenseInfo := showLicenseInfo(moduleGraph.value, streams.value)) ++ AsciiGraph.asciiGraphSetttings)
def ivyReportFunctionTask = Def.task {
- // FIXME: and remove busywork after https://github.com/sbt/sbt/issues/3299 is fixed
- val target = Keys.target.value
+ val crossTarget = Keys.crossTarget.value
val projectID = Keys.projectID.value
val ivyModule = Keys.ivyModule.value
- sbtVersion.value match {
- case Version(0, min, fix, _) if min > 12 || (min == 12 && fix >= 3) ⇒
- (c: String) ⇒ file("%s/resolution-cache/reports/%s-%s-%s.xml".format(target, projectID.organization, crossName(ivyModule), c))
- case Version(0, min, fix, _) if min == 12 && fix >= 1 && fix < 3 ⇒
- ivyModule.withModule(streams.value.log) { (i, moduleDesc, _) ⇒
- val id = ResolveOptions.getDefaultResolveId(moduleDesc)
- (c: String) ⇒ file("%s/resolution-cache/reports/%s/%s-resolved.xml" format (target, id, c))
- }
- case _ ⇒
- val home = appConfiguration.value.provider.scalaProvider.launcher.ivyHome
- (c: String) ⇒ file("%s/cache/%s-%s-%s.xml" format (home, projectID.organization, crossName(ivyModule), c))
+ (config: String) ⇒ {
+ val org = projectID.organization
+ val name = crossName(ivyModule)
+ file(s"${crossTarget}/resolution-cache/reports/$org-$name-$config.xml")
}
}
@@ -150,7 +147,7 @@ object DependencyGraphSettings {
graph.nodes.filter(_.isUsed).groupBy(_.license).toSeq.sortBy(_._1).map {
case (license, modules) ⇒
license.getOrElse("No license specified") + "\n" +
- modules.map("\t %s" format _.id.idString).mkString("\n")
+ modules.map(_.id.idString formatted "\t %s").mkString("\n")
}.mkString("\n\n")
streams.log.info(output)
}
diff --git a/src/main/scala/net/virtualvoid/sbt/graph/model.scala b/src/main/scala/net/virtualvoid/sbt/graph/model.scala
index 04cf57ff7..96ce95258 100644
--- a/src/main/scala/net/virtualvoid/sbt/graph/model.scala
+++ b/src/main/scala/net/virtualvoid/sbt/graph/model.scala
@@ -18,7 +18,7 @@ package net.virtualvoid.sbt.graph
import java.io.File
-import sbinary.{ DefaultProtocol, Format }
+import sbinary.Format
import scala.collection.mutable.{ HashMap, MultiMap, Set }
@@ -67,7 +67,9 @@ case class ModuleGraph(nodes: Seq[Module], edges: Seq[Edge]) {
nodes.filter(n ⇒ !edges.exists(_._2 == n.id)).sortBy(_.id.idString)
}
-object ModuleGraphProtocol extends DefaultProtocol with ModuleGraphProtocolCompat {
+object ModuleGraphProtocol extends ModuleGraphProtocolCompat {
+ import sbinary.DefaultProtocol._
+
implicit def seqFormat[T: Format]: Format[Seq[T]] = wrap[Seq[T], List[T]](_.toList, _.toSeq)
implicit val ModuleIdFormat: Format[ModuleId] = asProduct3(ModuleId)(ModuleId.unapply(_).get)
implicit val ModuleFormat: Format[Module] = asProduct6(Module)(Module.unapply(_).get)