diff --git a/librarymanagement/src/main/contraband/librarymanagement.json b/librarymanagement/src/main/contraband/librarymanagement.json index 0dd0a5580..8dd2d1cc9 100644 --- a/librarymanagement/src/main/contraband/librarymanagement.json +++ b/librarymanagement/src/main/contraband/librarymanagement.json @@ -257,9 +257,7 @@ { "name": "branchName", "type": "Option[String]", "default": "None", "since": "0.0.1" } ], "toString": [ - "organization + \":\" + name + \":\" + revision +", - " (configurations match { case Some(s) => \":\" + s; case None => \"\" }) +", - " (if (extraAttributes.isEmpty) \"\" else \" \" + extraString)" + "this.toStringImpl" ], "parentsCompanion": "sbt.librarymanagement.ModuleIDFunctions" }, diff --git a/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala index e4f12fd3d..572fd194d 100644 --- a/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala @@ -6,6 +6,7 @@ package sbt.librarymanagement import java.net.URL import sbt.internal.librarymanagement.mavenint.SbtPomExtraProperties +import scala.collection.mutable.ListBuffer abstract class ModuleIDExtra { def organization: String @@ -38,6 +39,31 @@ abstract class ModuleIDExtra { branchName: Option[String] = branchName ): ModuleID + protected def toStringImpl: String = + s"""$organization:$name:$revision""" + + (configurations match { case Some(s) => ":" + s; case None => "" }) + + { + val attr = attributeString + if (attr == "") "" + else " " + attr + } + + (if (extraAttributes.isEmpty) "" else " " + extraString) + + protected def attributeString: String = + { + val buffer = ListBuffer.empty[String] + if (isChanging) { + buffer += "changing" + } + if (!isTransitive) { + buffer += "intransitive" + } + if (isForce) { + buffer += "force" + } + buffer.toList.mkString(";") + } + /** String representation of the extra attributes, excluding any information only attributes. */ def extraString: String = extraDependencyAttributes.map { case (k, v) => k + "=" + v } mkString ("(", ", ", ")")