diff --git a/librarymanagement/src/main/contraband/librarymanagement.json b/librarymanagement/src/main/contraband/librarymanagement.json index d28da3b69..d098603d8 100644 --- a/librarymanagement/src/main/contraband/librarymanagement.json +++ b/librarymanagement/src/main/contraband/librarymanagement.json @@ -267,22 +267,33 @@ { "name": "organization", "type": "String" }, { "name": "name", "type": "String" }, { "name": "revision", "type": "String" }, - { "name": "configurations", "type": "Option[String]", "default": "None", "since": "0.0.1" }, - { "name": "isChanging", "type": "boolean", "default": "false", "since": "0.0.1" }, - { "name": "isTransitive", "type": "boolean", "default": "true", "since": "0.0.1" }, - { "name": "isForce", "type": "boolean", "default": "false", "since": "0.0.1" }, - { "name": "explicitArtifacts", "type": "sbt.librarymanagement.Artifact*", "default": "Vector.empty", "since": "0.0.1" }, - { "name": "inclusions", "type": "sbt.librarymanagement.InclExclRule*", "default": "Vector.empty", "since": "0.0.1" }, - { "name": "exclusions", "type": "sbt.librarymanagement.InclExclRule*", "default": "Vector.empty", "since": "0.0.1" }, - { "name": "extraAttributes", "type": "Map[String, String]", "default": "Map.empty", "since": "0.0.1" }, - { "name": "crossVersion", "type": "sbt.librarymanagement.CrossVersion", "default": "sbt.librarymanagement.Disabled()", "since": "0.0.1" }, - { "name": "branchName", "type": "Option[String]", "default": "None", "since": "0.0.1" } + { "name": "configurations", "type": "Option[String]", "default": "None", "since": "0.0.1" }, + { "name": "isChanging", "type": "boolean", "default": "false", "since": "0.0.1" }, + { "name": "isTransitive", "type": "boolean", "default": "true", "since": "0.0.1" }, + { "name": "isForce", "type": "boolean", "default": "false", "since": "0.0.1" }, + { "name": "explicitArtifacts", "type": "sbt.librarymanagement.Artifact*", "default": "Vector.empty", "since": "0.0.1" }, + { "name": "inclusions", "type": "sbt.librarymanagement.InclExclRule*", "default": "Vector.empty", "since": "0.0.1" }, + { "name": "exclusions", "type": "sbt.librarymanagement.InclExclRule*", "default": "Vector.empty", "since": "0.0.1" }, + { "name": "extraAttributes", "type": "Map[String, String]", "default": "Map.empty", "since": "0.0.1" }, + { "name": "crossVersion", "type": "sbt.librarymanagement.CrossVersion", "default": "sbt.librarymanagement.Disabled()", "since": "0.0.1" }, + { "name": "branchName", "type": "Option[String]", "default": "None", "since": "0.0.1" }, + { "name": "checksum", "type": "Option[sbt.librarymanagement.Checksum]", "default": "None", "since": "0.0.1" } ], "toString": [ "this.toStringImpl" ], "parentsCompanion": "sbt.librarymanagement.ModuleIDFunctions" }, + { + "name": "Checksum", + "namespace": "sbt.librarymanagement", + "target": "Scala", + "type": "record", + "fields": [ + { "name": "digest", "type": "String" }, + { "name": "type", "type": "String", "default": "sha1" } + ] + }, { "name": "ModuleInfo", "namespace": "sbt.librarymanagement", diff --git a/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala index 5b89b5419..e52df5a4d 100644 --- a/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala @@ -22,6 +22,7 @@ abstract class ModuleIDExtra { def extraAttributes: Map[String, String] def crossVersion: CrossVersion def branchName: Option[String] + def checksum: Option[Checksum] protected[this] def copy( organization: String = organization, @@ -36,12 +37,14 @@ abstract class ModuleIDExtra { exclusions: Vector[ExclusionRule] = exclusions, extraAttributes: Map[String, String] = extraAttributes, crossVersion: CrossVersion = crossVersion, - branchName: Option[String] = branchName + branchName: Option[String] = branchName, + checksum: Option[Checksum] = checksum ): ModuleID protected def toStringImpl: String = s"""$organization:$name:$revision""" + - (configurations match { case Some(s) => ":" + s; case None => "" }) + { + (checksum match { case Some(s) => s": ${s.`type`} ${s.digest}"; case None => "" }) + + (configurations match { case Some(s) => ":" + s; case None => "" }) + { val attr = attributeString if (attr == "") "" else " " + attr