Use ConfigRef in reports

This commit is contained in:
Eugene Yokota 2017-07-08 14:57:15 +02:00
parent 9f2f700762
commit 13e803d199
26 changed files with 103 additions and 101 deletions

View File

@ -72,7 +72,8 @@ lazy val lm = (project in file("librarymanagement"))
gigahorseOkhttp,
okhttpUrlconnection,
sjsonnewScalaJson.value % Optional,
scalaTest),
scalaTest,
scalaCheck),
libraryDependencies ++= scalaXml.value,
resourceGenerators in Compile += Def.task(
Util.generateVersionFile(

View File

@ -8,7 +8,7 @@ final class RetrieveConfiguration private (
val retrieveDirectory: java.io.File,
val outputPattern: String,
val sync: Boolean,
val configurationsToRetrieve: Option[Set[sbt.librarymanagement.Configuration]]) extends Serializable {
val configurationsToRetrieve: Option[Set[sbt.librarymanagement.ConfigRef]]) extends Serializable {
private def this(retrieveDirectory: java.io.File, outputPattern: String) = this(retrieveDirectory, outputPattern, false, None)
@ -22,7 +22,7 @@ final class RetrieveConfiguration private (
override def toString: String = {
"RetrieveConfiguration(" + retrieveDirectory + ", " + outputPattern + ", " + sync + ", " + configurationsToRetrieve + ")"
}
protected[this] def copy(retrieveDirectory: java.io.File = retrieveDirectory, outputPattern: String = outputPattern, sync: Boolean = sync, configurationsToRetrieve: Option[Set[sbt.librarymanagement.Configuration]] = configurationsToRetrieve): RetrieveConfiguration = {
protected[this] def copy(retrieveDirectory: java.io.File = retrieveDirectory, outputPattern: String = outputPattern, sync: Boolean = sync, configurationsToRetrieve: Option[Set[sbt.librarymanagement.ConfigRef]] = configurationsToRetrieve): RetrieveConfiguration = {
new RetrieveConfiguration(retrieveDirectory, outputPattern, sync, configurationsToRetrieve)
}
def withRetrieveDirectory(retrieveDirectory: java.io.File): RetrieveConfiguration = {
@ -34,12 +34,12 @@ final class RetrieveConfiguration private (
def withSync(sync: Boolean): RetrieveConfiguration = {
copy(sync = sync)
}
def withConfigurationsToRetrieve(configurationsToRetrieve: Option[Set[sbt.librarymanagement.Configuration]]): RetrieveConfiguration = {
def withConfigurationsToRetrieve(configurationsToRetrieve: Option[Set[sbt.librarymanagement.ConfigRef]]): RetrieveConfiguration = {
copy(configurationsToRetrieve = configurationsToRetrieve)
}
}
object RetrieveConfiguration {
def apply(retrieveDirectory: java.io.File, outputPattern: String): RetrieveConfiguration = new RetrieveConfiguration(retrieveDirectory, outputPattern, false, None)
def apply(retrieveDirectory: java.io.File, outputPattern: String, sync: Boolean, configurationsToRetrieve: Option[Set[sbt.librarymanagement.Configuration]]): RetrieveConfiguration = new RetrieveConfiguration(retrieveDirectory, outputPattern, sync, configurationsToRetrieve)
def apply(retrieveDirectory: java.io.File, outputPattern: String, sync: Boolean, configurationsToRetrieve: Option[Set[sbt.librarymanagement.ConfigRef]]): RetrieveConfiguration = new RetrieveConfiguration(retrieveDirectory, outputPattern, sync, configurationsToRetrieve)
}

View File

@ -6,7 +6,7 @@
package sbt.librarymanagement
final class Caller private (
val caller: sbt.librarymanagement.ModuleID,
val callerConfigurations: Vector[String],
val callerConfigurations: Vector[sbt.librarymanagement.ConfigRef],
val callerExtraAttributes: Map[String, String],
val isForceDependency: Boolean,
val isChangingDependency: Boolean,
@ -25,13 +25,13 @@ final class Caller private (
override def toString: String = {
s"$caller"
}
protected[this] def copy(caller: sbt.librarymanagement.ModuleID = caller, callerConfigurations: Vector[String] = callerConfigurations, callerExtraAttributes: Map[String, String] = callerExtraAttributes, isForceDependency: Boolean = isForceDependency, isChangingDependency: Boolean = isChangingDependency, isTransitiveDependency: Boolean = isTransitiveDependency, isDirectlyForceDependency: Boolean = isDirectlyForceDependency): Caller = {
protected[this] def copy(caller: sbt.librarymanagement.ModuleID = caller, callerConfigurations: Vector[sbt.librarymanagement.ConfigRef] = callerConfigurations, callerExtraAttributes: Map[String, String] = callerExtraAttributes, isForceDependency: Boolean = isForceDependency, isChangingDependency: Boolean = isChangingDependency, isTransitiveDependency: Boolean = isTransitiveDependency, isDirectlyForceDependency: Boolean = isDirectlyForceDependency): Caller = {
new Caller(caller, callerConfigurations, callerExtraAttributes, isForceDependency, isChangingDependency, isTransitiveDependency, isDirectlyForceDependency)
}
def withCaller(caller: sbt.librarymanagement.ModuleID): Caller = {
copy(caller = caller)
}
def withCallerConfigurations(callerConfigurations: Vector[String]): Caller = {
def withCallerConfigurations(callerConfigurations: Vector[sbt.librarymanagement.ConfigRef]): Caller = {
copy(callerConfigurations = callerConfigurations)
}
def withCallerExtraAttributes(callerExtraAttributes: Map[String, String]): Caller = {
@ -52,5 +52,5 @@ final class Caller private (
}
object Caller {
def apply(caller: sbt.librarymanagement.ModuleID, callerConfigurations: Vector[String], callerExtraAttributes: Map[String, String], isForceDependency: Boolean, isChangingDependency: Boolean, isTransitiveDependency: Boolean, isDirectlyForceDependency: Boolean): Caller = new Caller(caller, callerConfigurations, callerExtraAttributes, isForceDependency, isChangingDependency, isTransitiveDependency, isDirectlyForceDependency)
def apply(caller: sbt.librarymanagement.ModuleID, callerConfigurations: Vector[sbt.librarymanagement.ConfigRef], callerExtraAttributes: Map[String, String], isForceDependency: Boolean, isChangingDependency: Boolean, isTransitiveDependency: Boolean, isDirectlyForceDependency: Boolean): Caller = new Caller(caller, callerConfigurations, callerExtraAttributes, isForceDependency, isChangingDependency, isTransitiveDependency, isDirectlyForceDependency)
}

View File

@ -5,14 +5,14 @@
// DO NOT EDIT MANUALLY
package sbt.librarymanagement
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
trait CallerFormats { self: sbt.librarymanagement.ModuleIDFormats with sjsonnew.BasicJsonProtocol =>
trait CallerFormats { self: sbt.librarymanagement.ModuleIDFormats with sbt.librarymanagement.ConfigRefFormats with sjsonnew.BasicJsonProtocol =>
implicit lazy val CallerFormat: JsonFormat[sbt.librarymanagement.Caller] = new JsonFormat[sbt.librarymanagement.Caller] {
override def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.Caller = {
jsOpt match {
case Some(js) =>
unbuilder.beginObject(js)
val caller = unbuilder.readField[sbt.librarymanagement.ModuleID]("caller")
val callerConfigurations = unbuilder.readField[Vector[String]]("callerConfigurations")
val callerConfigurations = unbuilder.readField[Vector[sbt.librarymanagement.ConfigRef]]("callerConfigurations")
val callerExtraAttributes = unbuilder.readField[Map[String, String]]("callerExtraAttributes")
val isForceDependency = unbuilder.readField[Boolean]("isForceDependency")
val isChangingDependency = unbuilder.readField[Boolean]("isChangingDependency")

View File

@ -19,7 +19,7 @@ final class ConfigRef private (
37 * (37 * (17 + "ConfigRef".##) + name.##)
}
override def toString: String = {
"ConfigRef(" + name + ")"
name
}
protected[this] def copy(name: String = name): ConfigRef = {
new ConfigRef(name)

View File

@ -7,7 +7,7 @@ package sbt.librarymanagement
/** Provides information about resolution of a single configuration. */
final class ConfigurationReport private (
/** the configuration this report is for. */
val configuration: String,
val configuration: sbt.librarymanagement.ConfigRef,
/** a sequence containing one report for each module resolved for this configuration. */
val modules: Vector[sbt.librarymanagement.ModuleReport],
/** a sequence containing one report for each org/name, which may or may not be part of the final resolution. */
@ -27,10 +27,10 @@ final class ConfigurationReport private (
(if (details.isEmpty) modules.mkString + details.flatMap(_.modules).filter(_.evicted).map("\t\t(EVICTED) " + _ + "\n").mkString
else details.mkString)
}
protected[this] def copy(configuration: String = configuration, modules: Vector[sbt.librarymanagement.ModuleReport] = modules, details: Vector[sbt.librarymanagement.OrganizationArtifactReport] = details): ConfigurationReport = {
protected[this] def copy(configuration: sbt.librarymanagement.ConfigRef = configuration, modules: Vector[sbt.librarymanagement.ModuleReport] = modules, details: Vector[sbt.librarymanagement.OrganizationArtifactReport] = details): ConfigurationReport = {
new ConfigurationReport(configuration, modules, details)
}
def withConfiguration(configuration: String): ConfigurationReport = {
def withConfiguration(configuration: sbt.librarymanagement.ConfigRef): ConfigurationReport = {
copy(configuration = configuration)
}
def withModules(modules: Vector[sbt.librarymanagement.ModuleReport]): ConfigurationReport = {
@ -42,5 +42,5 @@ final class ConfigurationReport private (
}
object ConfigurationReport {
def apply(configuration: String, modules: Vector[sbt.librarymanagement.ModuleReport], details: Vector[sbt.librarymanagement.OrganizationArtifactReport]): ConfigurationReport = new ConfigurationReport(configuration, modules, details)
def apply(configuration: sbt.librarymanagement.ConfigRef, modules: Vector[sbt.librarymanagement.ModuleReport], details: Vector[sbt.librarymanagement.OrganizationArtifactReport]): ConfigurationReport = new ConfigurationReport(configuration, modules, details)
}

View File

@ -5,13 +5,13 @@
// DO NOT EDIT MANUALLY
package sbt.librarymanagement
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
trait ConfigurationReportFormats { self: sbt.librarymanagement.ModuleReportFormats with sbt.librarymanagement.OrganizationArtifactReportFormats with sjsonnew.BasicJsonProtocol =>
trait ConfigurationReportFormats { self: sbt.librarymanagement.ConfigRefFormats with sbt.librarymanagement.ModuleReportFormats with sbt.librarymanagement.OrganizationArtifactReportFormats with sjsonnew.BasicJsonProtocol =>
implicit lazy val ConfigurationReportFormat: JsonFormat[sbt.librarymanagement.ConfigurationReport] = new JsonFormat[sbt.librarymanagement.ConfigurationReport] {
override def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ConfigurationReport = {
jsOpt match {
case Some(js) =>
unbuilder.beginObject(js)
val configuration = unbuilder.readField[String]("configuration")
val configuration = unbuilder.readField[sbt.librarymanagement.ConfigRef]("configuration")
val modules = unbuilder.readField[Vector[sbt.librarymanagement.ModuleReport]]("modules")
val details = unbuilder.readField[Vector[sbt.librarymanagement.OrganizationArtifactReport]]("details")
unbuilder.endObject()

View File

@ -17,7 +17,7 @@ final class InclExclRule private (
val organization: String,
val name: String,
val artifact: String,
val configurations: Vector[String],
val configurations: Vector[sbt.librarymanagement.ConfigRef],
val crossVersion: sbt.librarymanagement.CrossVersion) extends Serializable {
private def this() = this("*", "*", "*", Vector.empty, sbt.librarymanagement.Disabled())
@ -32,7 +32,7 @@ final class InclExclRule private (
override def toString: String = {
"InclExclRule(" + organization + ", " + name + ", " + artifact + ", " + configurations + ", " + crossVersion + ")"
}
protected[this] def copy(organization: String = organization, name: String = name, artifact: String = artifact, configurations: Vector[String] = configurations, crossVersion: sbt.librarymanagement.CrossVersion = crossVersion): InclExclRule = {
protected[this] def copy(organization: String = organization, name: String = name, artifact: String = artifact, configurations: Vector[sbt.librarymanagement.ConfigRef] = configurations, crossVersion: sbt.librarymanagement.CrossVersion = crossVersion): InclExclRule = {
new InclExclRule(organization, name, artifact, configurations, crossVersion)
}
def withOrganization(organization: String): InclExclRule = {
@ -44,7 +44,7 @@ final class InclExclRule private (
def withArtifact(artifact: String): InclExclRule = {
copy(artifact = artifact)
}
def withConfigurations(configurations: Vector[String]): InclExclRule = {
def withConfigurations(configurations: Vector[sbt.librarymanagement.ConfigRef]): InclExclRule = {
copy(configurations = configurations)
}
def withCrossVersion(crossVersion: sbt.librarymanagement.CrossVersion): InclExclRule = {
@ -54,5 +54,5 @@ final class InclExclRule private (
object InclExclRule extends sbt.librarymanagement.InclExclRuleFunctions {
def apply(): InclExclRule = new InclExclRule("*", "*", "*", Vector.empty, sbt.librarymanagement.Disabled())
def apply(organization: String, name: String, artifact: String, configurations: Vector[String], crossVersion: sbt.librarymanagement.CrossVersion): InclExclRule = new InclExclRule(organization, name, artifact, configurations, crossVersion)
def apply(organization: String, name: String, artifact: String, configurations: Vector[sbt.librarymanagement.ConfigRef], crossVersion: sbt.librarymanagement.CrossVersion): InclExclRule = new InclExclRule(organization, name, artifact, configurations, crossVersion)
}

View File

@ -5,7 +5,7 @@
// DO NOT EDIT MANUALLY
package sbt.librarymanagement
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
trait InclExclRuleFormats { self: sbt.librarymanagement.CrossVersionFormats with sjsonnew.BasicJsonProtocol =>
trait InclExclRuleFormats { self: sbt.librarymanagement.ConfigRefFormats with sbt.librarymanagement.CrossVersionFormats with sjsonnew.BasicJsonProtocol =>
implicit lazy val InclExclRuleFormat: JsonFormat[sbt.librarymanagement.InclExclRule] = new JsonFormat[sbt.librarymanagement.InclExclRule] {
override def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.InclExclRule = {
jsOpt match {
@ -14,7 +14,7 @@ implicit lazy val InclExclRuleFormat: JsonFormat[sbt.librarymanagement.InclExclR
val organization = unbuilder.readField[String]("organization")
val name = unbuilder.readField[String]("name")
val artifact = unbuilder.readField[String]("artifact")
val configurations = unbuilder.readField[Vector[String]]("configurations")
val configurations = unbuilder.readField[Vector[sbt.librarymanagement.ConfigRef]]("configurations")
val crossVersion = unbuilder.readField[sbt.librarymanagement.CrossVersion]("crossVersion")
unbuilder.endObject()
sbt.librarymanagement.InclExclRule(organization, name, artifact, configurations, crossVersion)

View File

@ -24,7 +24,7 @@ final class ModuleReport private (
val extraAttributes: Map[String, String],
val isDefault: Option[Boolean],
val branch: Option[String],
val configurations: Vector[String],
val configurations: Vector[sbt.librarymanagement.ConfigRef],
val licenses: Vector[scala.Tuple2[String, Option[String]]],
val callers: Vector[sbt.librarymanagement.Caller]) extends sbt.librarymanagement.ModuleReportExtra with Serializable {
@ -41,7 +41,7 @@ final class ModuleReport private (
s"\t\t$module: " +
(if (arts.size <= 1) "" else "\n\t\t\t") + arts.mkString("\n\t\t\t") + "\n"
}
protected[this] def copy(module: sbt.librarymanagement.ModuleID = module, artifacts: Vector[scala.Tuple2[sbt.librarymanagement.Artifact, java.io.File]] = artifacts, missingArtifacts: Vector[sbt.librarymanagement.Artifact] = missingArtifacts, status: Option[String] = status, publicationDate: Option[java.util.Calendar] = publicationDate, resolver: Option[String] = resolver, artifactResolver: Option[String] = artifactResolver, evicted: Boolean = evicted, evictedData: Option[String] = evictedData, evictedReason: Option[String] = evictedReason, problem: Option[String] = problem, homepage: Option[String] = homepage, extraAttributes: Map[String, String] = extraAttributes, isDefault: Option[Boolean] = isDefault, branch: Option[String] = branch, configurations: Vector[String] = configurations, licenses: Vector[scala.Tuple2[String, Option[String]]] = licenses, callers: Vector[sbt.librarymanagement.Caller] = callers): ModuleReport = {
protected[this] def copy(module: sbt.librarymanagement.ModuleID = module, artifacts: Vector[scala.Tuple2[sbt.librarymanagement.Artifact, java.io.File]] = artifacts, missingArtifacts: Vector[sbt.librarymanagement.Artifact] = missingArtifacts, status: Option[String] = status, publicationDate: Option[java.util.Calendar] = publicationDate, resolver: Option[String] = resolver, artifactResolver: Option[String] = artifactResolver, evicted: Boolean = evicted, evictedData: Option[String] = evictedData, evictedReason: Option[String] = evictedReason, problem: Option[String] = problem, homepage: Option[String] = homepage, extraAttributes: Map[String, String] = extraAttributes, isDefault: Option[Boolean] = isDefault, branch: Option[String] = branch, configurations: Vector[sbt.librarymanagement.ConfigRef] = configurations, licenses: Vector[scala.Tuple2[String, Option[String]]] = licenses, callers: Vector[sbt.librarymanagement.Caller] = callers): ModuleReport = {
new ModuleReport(module, artifacts, missingArtifacts, status, publicationDate, resolver, artifactResolver, evicted, evictedData, evictedReason, problem, homepage, extraAttributes, isDefault, branch, configurations, licenses, callers)
}
def withModule(module: sbt.librarymanagement.ModuleID): ModuleReport = {
@ -89,7 +89,7 @@ final class ModuleReport private (
def withBranch(branch: Option[String]): ModuleReport = {
copy(branch = branch)
}
def withConfigurations(configurations: Vector[String]): ModuleReport = {
def withConfigurations(configurations: Vector[sbt.librarymanagement.ConfigRef]): ModuleReport = {
copy(configurations = configurations)
}
def withLicenses(licenses: Vector[scala.Tuple2[String, Option[String]]]): ModuleReport = {
@ -102,5 +102,5 @@ final class ModuleReport private (
object ModuleReport {
def apply(module: sbt.librarymanagement.ModuleID, artifacts: Vector[scala.Tuple2[sbt.librarymanagement.Artifact, java.io.File]], missingArtifacts: Vector[sbt.librarymanagement.Artifact]): ModuleReport = new ModuleReport(module, artifacts, missingArtifacts, None, None, None, None, false, None, None, None, None, Map.empty, None, None, Vector.empty, Vector.empty, Vector.empty)
def apply(module: sbt.librarymanagement.ModuleID, artifacts: Vector[scala.Tuple2[sbt.librarymanagement.Artifact, java.io.File]], missingArtifacts: Vector[sbt.librarymanagement.Artifact], status: Option[String], publicationDate: Option[java.util.Calendar], resolver: Option[String], artifactResolver: Option[String], evicted: Boolean, evictedData: Option[String], evictedReason: Option[String], problem: Option[String], homepage: Option[String], extraAttributes: Map[String, String], isDefault: Option[Boolean], branch: Option[String], configurations: Vector[String], licenses: Vector[scala.Tuple2[String, Option[String]]], callers: Vector[sbt.librarymanagement.Caller]): ModuleReport = new ModuleReport(module, artifacts, missingArtifacts, status, publicationDate, resolver, artifactResolver, evicted, evictedData, evictedReason, problem, homepage, extraAttributes, isDefault, branch, configurations, licenses, callers)
def apply(module: sbt.librarymanagement.ModuleID, artifacts: Vector[scala.Tuple2[sbt.librarymanagement.Artifact, java.io.File]], missingArtifacts: Vector[sbt.librarymanagement.Artifact], status: Option[String], publicationDate: Option[java.util.Calendar], resolver: Option[String], artifactResolver: Option[String], evicted: Boolean, evictedData: Option[String], evictedReason: Option[String], problem: Option[String], homepage: Option[String], extraAttributes: Map[String, String], isDefault: Option[Boolean], branch: Option[String], configurations: Vector[sbt.librarymanagement.ConfigRef], licenses: Vector[scala.Tuple2[String, Option[String]]], callers: Vector[sbt.librarymanagement.Caller]): ModuleReport = new ModuleReport(module, artifacts, missingArtifacts, status, publicationDate, resolver, artifactResolver, evicted, evictedData, evictedReason, problem, homepage, extraAttributes, isDefault, branch, configurations, licenses, callers)
}

View File

@ -5,7 +5,7 @@
// DO NOT EDIT MANUALLY
package sbt.librarymanagement
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
trait ModuleReportFormats { self: sbt.librarymanagement.ModuleIDFormats with sbt.librarymanagement.ArtifactFormats with sbt.librarymanagement.CallerFormats with sjsonnew.BasicJsonProtocol =>
trait ModuleReportFormats { self: sbt.librarymanagement.ModuleIDFormats with sbt.librarymanagement.ArtifactFormats with sbt.librarymanagement.ConfigRefFormats with sbt.librarymanagement.CallerFormats with sjsonnew.BasicJsonProtocol =>
implicit lazy val ModuleReportFormat: JsonFormat[sbt.librarymanagement.ModuleReport] = new JsonFormat[sbt.librarymanagement.ModuleReport] {
override def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ModuleReport = {
jsOpt match {
@ -26,7 +26,7 @@ implicit lazy val ModuleReportFormat: JsonFormat[sbt.librarymanagement.ModuleRep
val extraAttributes = unbuilder.readField[Map[String, String]]("extraAttributes")
val isDefault = unbuilder.readField[Option[Boolean]]("isDefault")
val branch = unbuilder.readField[Option[String]]("branch")
val configurations = unbuilder.readField[Vector[String]]("configurations")
val configurations = unbuilder.readField[Vector[sbt.librarymanagement.ConfigRef]]("configurations")
val licenses = unbuilder.readField[Vector[scala.Tuple2[String, Option[String]]]]("licenses")
val callers = unbuilder.readField[Vector[sbt.librarymanagement.Caller]]("callers")
unbuilder.endObject()

View File

@ -5,7 +5,7 @@
// DO NOT EDIT MANUALLY
package sbt.librarymanagement
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
trait RetrieveConfigurationFormats { self: sbt.librarymanagement.ConfigurationFormats with sjsonnew.BasicJsonProtocol =>
trait RetrieveConfigurationFormats { self: sbt.librarymanagement.ConfigRefFormats with sjsonnew.BasicJsonProtocol =>
implicit lazy val RetrieveConfigurationFormat: JsonFormat[sbt.internal.librarymanagement.RetrieveConfiguration] = new JsonFormat[sbt.internal.librarymanagement.RetrieveConfiguration] {
override def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.librarymanagement.RetrieveConfiguration = {
jsOpt match {
@ -14,7 +14,7 @@ implicit lazy val RetrieveConfigurationFormat: JsonFormat[sbt.internal.libraryma
val retrieveDirectory = unbuilder.readField[java.io.File]("retrieveDirectory")
val outputPattern = unbuilder.readField[String]("outputPattern")
val sync = unbuilder.readField[Boolean]("sync")
val configurationsToRetrieve = unbuilder.readField[Option[Set[sbt.librarymanagement.Configuration]]]("configurationsToRetrieve")
val configurationsToRetrieve = unbuilder.readField[Option[Set[sbt.librarymanagement.ConfigRef]]]("configurationsToRetrieve")
unbuilder.endObject()
sbt.internal.librarymanagement.RetrieveConfiguration(retrieveDirectory, outputPattern, sync, configurationsToRetrieve)
case None =>

View File

@ -52,7 +52,7 @@
"type": "record",
"fields": [
{ "name": "caller", "type": "sbt.librarymanagement.ModuleID" },
{ "name": "callerConfigurations", "type": "String*" },
{ "name": "callerConfigurations", "type": "sbt.librarymanagement.ConfigRef*" },
{ "name": "callerExtraAttributes", "type": "Map[String, String]" },
{ "name": "isForceDependency", "type": "boolean" },
{ "name": "isChangingDependency", "type": "boolean" },
@ -76,7 +76,8 @@
"doc": [ "The name of the configuration that eventually get used by Maven." ]
}
],
"parentsCompanion": "sbt.librarymanagement.ConfigRefFunctions"
"parentsCompanion": "sbt.librarymanagement.ConfigRefFunctions",
"toString": "name"
},
{
"name": "ConfigurationReport",
@ -88,7 +89,7 @@
],
"parents": "sbt.librarymanagement.ConfigurationReportExtra",
"fields": [
{ "name": "configuration", "type": "String", "doc": [ "the configuration this report is for." ] },
{ "name": "configuration", "type": "sbt.librarymanagement.ConfigRef", "doc": [ "the configuration this report is for." ] },
{
"name": "modules",
"type": "sbt.librarymanagement.ModuleReport*",
@ -233,7 +234,7 @@
{ "name": "organization", "type": "String", "default": "\"*\"", "since": "0.0.1" },
{ "name": "name", "type": "String", "default": "\"*\"", "since": "0.0.1" },
{ "name": "artifact", "type": "String", "default": "\"*\"", "since": "0.0.1" },
{ "name": "configurations", "type": "String*", "default": "Vector.empty", "since": "0.0.1" },
{ "name": "configurations", "type": "sbt.librarymanagement.ConfigRef*", "default": "Vector.empty", "since": "0.0.1" },
{ "name": "crossVersion", "type": "sbt.librarymanagement.CrossVersion", "default": "sbt.librarymanagement.Disabled()", "since": "0.0.1"}
],
"parentsCompanion": "sbt.librarymanagement.InclExclRuleFunctions"
@ -351,7 +352,7 @@
{ "name": "extraAttributes", "type": "Map[String, String]", "default": "Map.empty", "since": "0.0.1" },
{ "name": "isDefault", "type": "Option[Boolean]", "default": "None", "since": "0.0.1" },
{ "name": "branch", "type": "Option[String]", "default": "None", "since": "0.0.1" },
{ "name": "configurations", "type": "String*", "default": "Vector.empty", "since": "0.0.1" },
{ "name": "configurations", "type": "sbt.librarymanagement.ConfigRef*", "default": "Vector.empty", "since": "0.0.1" },
{ "name": "licenses", "type": "scala.Tuple2[String, Option[String]]*", "default": "Vector.empty", "since": "0.0.1" },
{ "name": "callers", "type": "sbt.librarymanagement.Caller*", "default": "Vector.empty", "since": "0.0.1" }
],
@ -805,8 +806,8 @@
"fields": [
{ "name": "retrieveDirectory", "type": "java.io.File" },
{ "name": "outputPattern", "type": "String" },
{ "name": "sync", "type": "boolean", "default": "false", "since": "0.0.1" },
{ "name": "configurationsToRetrieve", "type": "Option[Set[sbt.librarymanagement.Configuration]]", "default": "None", "since": "0.0.1" }
{ "name": "sync", "type": "boolean", "default": "false", "since": "0.0.1" },
{ "name": "configurationsToRetrieve", "type": "Option[Set[sbt.librarymanagement.ConfigRef]]", "default": "None", "since": "0.0.1" }
]
},
{

View File

@ -829,7 +829,7 @@ private[sbt] object IvySbt {
IvyScala.excludeRule(
excls.organization,
excls.name,
excls.configurations,
excls.configurations map { _.name },
excls.artifact
)
)
@ -842,7 +842,7 @@ private[sbt] object IvySbt {
IvyScala.includeRule(
incls.organization,
incls.name,
incls.configurations,
incls.configurations map { _.name },
incls.artifact
)
)
@ -877,7 +877,7 @@ private[sbt] object IvySbt {
val exclude = CrossVersion.substituteCross(exclude0, ivyScala)
val confs =
if (exclude.configurations.isEmpty) moduleID.getConfigurationsNames.toList
else exclude.configurations
else exclude.configurations map { _.name }
val excludeRule =
IvyScala.excludeRule(exclude.organization, exclude.name, confs, exclude.artifact)
moduleID.addExcludeRule(excludeRule)

View File

@ -541,19 +541,15 @@ object IvyActions {
config: RetrieveConfiguration
): UpdateReport = {
val copyChecksums = ivy.getVariable(ConvertResolver.ManagedChecksums).toBoolean
val toRetrieve = config.configurationsToRetrieve
val toRetrieve: Option[Set[ConfigRef]] = config.configurationsToRetrieve
val base = config.retrieveDirectory
val pattern = config.outputPattern
val configurationNames = toRetrieve match {
case None => None
case Some(configs) => Some(configs.map(_.name))
}
val existingFiles = PathFinder(base).allPaths.get filterNot { _.isDirectory }
val toCopy = new collection.mutable.HashSet[(File, File)]
val retReport = report retrieve { (conf, mid, art, cached) =>
configurationNames match {
val retReport = report retrieve { (conf: ConfigRef, mid, art, cached) =>
toRetrieve match {
case None => performRetrieve(conf, mid, art, base, pattern, cached, copyChecksums, toCopy)
case Some(names) if names(conf) =>
case Some(refs) if refs(conf) =>
performRetrieve(conf, mid, art, base, pattern, cached, copyChecksums, toCopy)
case _ => cached
}
@ -572,7 +568,7 @@ object IvyActions {
}
private def performRetrieve(
conf: String,
conf: ConfigRef,
mid: ModuleID,
art: Artifact,
base: File,
@ -603,7 +599,7 @@ object IvyActions {
}
private def retrieveTarget(
conf: String,
conf: ConfigRef,
mid: ModuleID,
art: Artifact,
base: File,
@ -611,7 +607,7 @@ object IvyActions {
): File =
new File(base, substitute(conf, mid, art, pattern))
private def substitute(conf: String, mid: ModuleID, art: Artifact, pattern: String): String = {
private def substitute(conf: ConfigRef, mid: ModuleID, art: Artifact, pattern: String): String = {
val mextra = IvySbt.javaMap(mid.extraAttributes, true)
val aextra = IvySbt.extra(art, true)
IvyPatternHelper.substitute(
@ -623,7 +619,7 @@ object IvyActions {
art.name,
art.`type`,
art.extension,
conf,
conf.name,
null,
mextra,
aextra

View File

@ -89,7 +89,7 @@ object IvyRetrieve {
def toCaller(caller: IvyCaller): Caller = {
val m = toModuleID(caller.getModuleRevisionId)
val callerConfigurations = caller.getCallerConfigurations.toVector collect {
case x if nonEmptyString(x).isDefined => x
case x if nonEmptyString(x).isDefined => ConfigRef(x)
}
val ddOpt = Option(caller.getDependencyDescriptor)
val (extraAttributes, isForce, isChanging, isTransitive, isDirectlyForce) = ddOpt match {
@ -167,7 +167,9 @@ object IvyRetrieve {
case _ => dep.getResolvedId.getExtraAttributes
})
val isDefault = Option(dep.getDescriptor) map { _.isDefault }
val configurations = dep.getConfigurations(confReport.getConfiguration).toVector
val configurations = dep.getConfigurations(confReport.getConfiguration).toVector map {
ConfigRef(_)
}
val licenses: Vector[(String, Option[String])] = mdOpt match {
case Some(md) =>
md.getLicenses.toVector collect {
@ -235,7 +237,7 @@ object IvyRetrieve {
UpdateStats(report.getResolveTime, report.getDownloadTime, report.getDownloadSize, false)
def configurationReport(confReport: ConfigurationResolveReport): ConfigurationReport =
ConfigurationReport(
confReport.getConfiguration,
ConfigRef(confReport.getConfiguration),
moduleReports(confReport),
organizationArtifactReports(confReport)
)

View File

@ -35,7 +35,7 @@ private[sbt] object JsonUtil {
def toLite(ur: UpdateReport): UpdateReportLite =
UpdateReportLite(ur.configurations map { cr =>
ConfigurationReportLite(
cr.configuration,
cr.configuration.name,
cr.details map {
oar =>
OrganizationArtifactReport(
@ -92,7 +92,7 @@ private[sbt] object JsonUtil {
!mr.evicted && mr.problem.isEmpty
}
}
ConfigurationReport(cr.configuration, modules, details)
ConfigurationReport(ConfigRef(cr.configuration), modules, details)
}
UpdateReport(cachedDescriptor, configReports, stats, Map.empty)
}

View File

@ -512,14 +512,16 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
)
val configReports = rootModuleConfigs map { conf =>
log.debug("::: -----------")
val crs = reports flatMap { _.configurations filter { _.configuration == conf.getName } }
mergeConfigurationReports(conf.getName, crs, os, log)
val crs = reports flatMap {
_.configurations filter { _.configuration.name == conf.getName }
}
mergeConfigurationReports(ConfigRef(conf.getName), crs, os, log)
}
UpdateReport(cachedDescriptor, configReports, stats, Map.empty)
}
// memory usage 62%, of which 58% is in mergeOrganizationArtifactReports
def mergeConfigurationReports(
rootModuleConf: String,
rootModuleConf: ConfigRef,
reports: Vector[ConfigurationReport],
os: Vector[IvyOverride],
log: Logger
@ -539,7 +541,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
* Returns a tuple of (merged org + name combo, newly evicted modules)
*/
def mergeOrganizationArtifactReports(
rootModuleConf: String,
rootModuleConf: ConfigRef,
reports0: Vector[OrganizationArtifactReport],
os: Vector[IvyOverride],
log: Logger
@ -735,7 +737,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
* Returns a touple of (surviving modules ++ non-conflicting modules, newly evicted modules).
*/
def mergeModuleReports(
rootModuleConf: String,
rootModuleConf: ConfigRef,
modules: Vector[ModuleReport],
os: Vector[IvyOverride],
log: Logger
@ -787,7 +789,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
* This transitively evicts any non-evicted modules whose only callers are newly evicted.
*/
def transitivelyEvict(
rootModuleConf: String,
rootModuleConf: ConfigRef,
pairs: List[(String, String)],
reports0: Map[(String, String), Vector[OrganizationArtifactReport]],
evicted0: Vector[ModuleReport],
@ -833,7 +835,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
* which may be because Ivy makes all Maven dependencies as forced="true".
*/
def resolveConflict(
rootModuleConf: String,
rootModuleConf: ConfigRef,
conflicts: Vector[ModuleReport],
os: Vector[IvyOverride],
log: Logger
@ -945,7 +947,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
}
// These are the configurations from the original project we want to resolve.
val rootModuleConfs = md0.getConfigurations.toVector
val configurations0 = ur.configurations.toVector
val configurations0: Vector[ConfigurationReport] = ur.configurations.toVector
// This is how md looks from md0 via dd's mapping.
val remappedConfigs0: Map[String, Vector[String]] = Map(rootModuleConfs map { conf0 =>
val remapped
@ -969,7 +971,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
val remappedCRs = configurations0 filter { cr =>
remappedConfigs(conf0.getName) contains cr.configuration
}
mergeConfigurationReports(conf0.getName, remappedCRs, os, log)
mergeConfigurationReports(ConfigRef(conf0.getName), remappedCRs, os, log)
}
UpdateReport(ur.cachedDescriptor, configurations, ur.stats, ur.stamps)
}

View File

@ -14,6 +14,7 @@ object Configurations {
def defaultInternal: Seq[Configuration] = Seq(CompileInternal, RuntimeInternal, TestInternal)
def auxiliary: Seq[Configuration] = Seq(Pom)
def names(cs: Seq[Configuration]) = cs.map(_.name)
def refs(cs: Seq[Configuration]) = cs.map(_.toConfigRef)
lazy val RuntimeInternal = optionalInternal(Runtime)
lazy val TestInternal = fullInternal(Test)

View File

@ -28,7 +28,7 @@ trait DependencyFilterExtra {
}
def configurationFilter(name: NameFilter = AllPassFilter): ConfigurationFilter =
new ConfigurationFilter {
def apply(c: String): Boolean = name.accept(c)
def apply(c: ConfigRef): Boolean = name.accept(c.name)
}
}
object DependencyFilter extends DependencyFilterExtra {
@ -38,7 +38,7 @@ object DependencyFilter extends DependencyFilterExtra {
artifact: ArtifactFilter = artifactFilter()
): DependencyFilter =
new DependencyFilter {
def apply(c: String, m: ModuleID, a: Artifact): Boolean =
def apply(c: ConfigRef, m: ModuleID, a: Artifact): Boolean =
configuration(c) && module(m) && artifact(a)
}
def apply(
@ -47,7 +47,7 @@ object DependencyFilter extends DependencyFilterExtra {
combine: (Boolean, Boolean) => Boolean
): DependencyFilter =
new DependencyFilter {
def apply(c: String, m: ModuleID, a: Artifact): Boolean = combine(x(c, m, a), y(c, m, a))
def apply(c: ConfigRef, m: ModuleID, a: Artifact): Boolean = combine(x(c, m, a), y(c, m, a))
}
def allPass: DependencyFilter = configurationFilter()
implicit def fnToModuleFilter(f: ModuleID => Boolean): ModuleFilter = new ModuleFilter {
@ -56,12 +56,12 @@ object DependencyFilter extends DependencyFilterExtra {
implicit def fnToArtifactFilter(f: Artifact => Boolean): ArtifactFilter = new ArtifactFilter {
def apply(m: Artifact) = f(m)
}
implicit def fnToConfigurationFilter(f: String => Boolean): ConfigurationFilter =
new ConfigurationFilter { def apply(c: String) = f(c) }
implicit def fnToConfigurationFilter(f: ConfigRef => Boolean): ConfigurationFilter =
new ConfigurationFilter { def apply(c: ConfigRef) = f(c) }
implicit def subDepFilterToFn[Arg](f: SubDepFilter[Arg, _]): Arg => Boolean = f apply _
}
trait DependencyFilter {
def apply(configuration: String, module: ModuleID, artifact: Artifact): Boolean
def apply(configuration: ConfigRef, module: ModuleID, artifact: Artifact): Boolean
final def &&(o: DependencyFilter) = DependencyFilter(this, o, _ && _)
final def ||(o: DependencyFilter) = DependencyFilter(this, o, _ || _)
final def --(o: DependencyFilter) = DependencyFilter(this, o, _ && !_)
@ -80,20 +80,20 @@ trait ModuleFilter extends SubDepFilter[ModuleID, ModuleFilter] {
protected final def make(f: ModuleID => Boolean) = new ModuleFilter {
def apply(m: ModuleID) = f(m)
}
final def apply(configuration: String, module: ModuleID, artifact: Artifact): Boolean =
final def apply(configuration: ConfigRef, module: ModuleID, artifact: Artifact): Boolean =
apply(module)
}
trait ArtifactFilter extends SubDepFilter[Artifact, ArtifactFilter] {
protected final def make(f: Artifact => Boolean) = new ArtifactFilter {
def apply(m: Artifact) = f(m)
}
final def apply(configuration: String, module: ModuleID, artifact: Artifact): Boolean =
final def apply(configuration: ConfigRef, module: ModuleID, artifact: Artifact): Boolean =
apply(artifact)
}
trait ConfigurationFilter extends SubDepFilter[String, ConfigurationFilter] {
protected final def make(f: String => Boolean) = new ConfigurationFilter {
def apply(m: String) = f(m)
trait ConfigurationFilter extends SubDepFilter[ConfigRef, ConfigurationFilter] {
protected final def make(f: ConfigRef => Boolean) = new ConfigurationFilter {
def apply(m: ConfigRef) = f(m)
}
final def apply(configuration: String, module: ModuleID, artifact: Artifact): Boolean =
final def apply(configuration: ConfigRef, module: ModuleID, artifact: Artifact): Boolean =
apply(configuration)
}

View File

@ -8,7 +8,7 @@ import sbt.util.ShowLines
import sbt.internal.librarymanagement.{ InlineConfiguration, IvySbt }
final class EvictionWarningOptions private[sbt] (
val configurations: Seq[Configuration],
val configurations: Seq[ConfigRef],
val warnScalaVersionEviction: Boolean,
val warnDirectEvictions: Boolean,
val warnTransitiveEvictions: Boolean,
@ -16,9 +16,7 @@ final class EvictionWarningOptions private[sbt] (
val showCallers: Boolean,
val guessCompatible: Function1[(ModuleID, Option[ModuleID], Option[IvyScala]), Boolean]
) {
private[sbt] def configStrings = configurations map { _.name }
def withConfigurations(configurations: Seq[Configuration]): EvictionWarningOptions =
def withConfigurations(configurations: Seq[ConfigRef]): EvictionWarningOptions =
copy(configurations = configurations)
def withWarnScalaVersionEviction(warnScalaVersionEviction: Boolean): EvictionWarningOptions =
copy(warnScalaVersionEviction = warnScalaVersionEviction)
@ -36,7 +34,7 @@ final class EvictionWarningOptions private[sbt] (
copy(guessCompatible = guessCompatible)
private[sbt] def copy(
configurations: Seq[Configuration] = configurations,
configurations: Seq[ConfigRef] = configurations,
warnScalaVersionEviction: Boolean = warnScalaVersionEviction,
warnDirectEvictions: Boolean = warnDirectEvictions,
warnTransitiveEvictions: Boolean = warnTransitiveEvictions,
@ -193,7 +191,7 @@ object EvictionWarning {
): Seq[OrganizationArtifactReport] = {
val buffer: mutable.ListBuffer[OrganizationArtifactReport] = mutable.ListBuffer()
val confs = report.configurations filter { x =>
options.configStrings contains x.configuration
options.configurations contains x.configuration
}
confs flatMap { confReport =>
confReport.details map { detail =>

View File

@ -69,7 +69,7 @@ final class RichUpdateReport(report: UpdateReport) {
}
private[sbt] def substitute(
f: (String, ModuleID, Vector[(Artifact, File)]) => Vector[(Artifact, File)]
f: (ConfigRef, ModuleID, Vector[(Artifact, File)]) => Vector[(Artifact, File)]
): UpdateReport =
moduleReportMap { (configuration, modReport) =>
val newArtifacts = f(configuration, modReport.module, modReport.artifacts)
@ -78,15 +78,15 @@ final class RichUpdateReport(report: UpdateReport) {
.withMissingArtifacts(modReport.missingArtifacts)
}
def toSeq: Seq[(String, ModuleID, Artifact, File)] = toVector
def toVector: Vector[(String, ModuleID, Artifact, File)] =
def toSeq: Seq[(ConfigRef, ModuleID, Artifact, File)] = toVector
def toVector: Vector[(ConfigRef, ModuleID, Artifact, File)] =
for {
confReport <- report.configurations
modReport <- confReport.modules
(artifact, file) <- modReport.artifacts
} yield (confReport.configuration, modReport.module, artifact, file)
def allMissing: Vector[(String, ModuleID, Artifact)] =
def allMissing: Vector[(ConfigRef, ModuleID, Artifact)] =
for {
confReport <- report.configurations
modReport <- confReport.modules
@ -99,7 +99,7 @@ final class RichUpdateReport(report: UpdateReport) {
.withMissingArtifacts((modReport.missingArtifacts ++ f(modReport.module)).distinct)
}
private[sbt] def moduleReportMap(f: (String, ModuleReport) => ModuleReport): UpdateReport = {
private[sbt] def moduleReportMap(f: (ConfigRef, ModuleReport) => ModuleReport): UpdateReport = {
val newConfigurations = report.configurations.map { confReport =>
import confReport._
val newModules = modules map { modReport =>

View File

@ -7,7 +7,7 @@ import java.io.File
import java.{ util => ju }
abstract class ConfigurationReportExtra {
def configuration: String
def configuration: ConfigRef
def modules: Vector[ModuleReport]
def details: Vector[OrganizationArtifactReport]
@ -28,7 +28,7 @@ abstract class ConfigurationReportExtra {
} else module
}
def retrieve(f: (String, ModuleID, Artifact, File) => File): ConfigurationReport =
def retrieve(f: (ConfigRef, ModuleID, Artifact, File) => File): ConfigurationReport =
ConfigurationReport(configuration, modules map {
_.retrieve((mid, art, file) => f(configuration, mid, art, file))
}, details)
@ -50,7 +50,7 @@ abstract class ModuleReportExtra {
def extraAttributes: Map[String, String]
def isDefault: Option[Boolean]
def branch: Option[String]
def configurations: Vector[String]
def configurations: Vector[ConfigRef]
def licenses: Vector[(String, Option[String])]
def callers: Vector[Caller]
@ -115,7 +115,7 @@ abstract class ModuleReportExtra {
extraAttributes: Map[String, String] = extraAttributes,
isDefault: Option[Boolean] = isDefault,
branch: Option[String] = branch,
configurations: Vector[String] = configurations,
configurations: Vector[ConfigRef] = configurations,
licenses: Vector[(String, Option[String])] = licenses,
callers: Vector[Caller] = callers
): ModuleReport
@ -144,12 +144,12 @@ abstract class UpdateReportExtra {
}
}
def retrieve(f: (String, ModuleID, Artifact, File) => File): UpdateReport =
def retrieve(f: (ConfigRef, ModuleID, Artifact, File) => File): UpdateReport =
UpdateReport(cachedDescriptor, configurations map { _ retrieve f }, stats, stamps)
/** Gets the report for the given configuration, or `None` if the configuration was not resolved.*/
def configuration(s: String) = configurations.find(_.configuration == s)
def configuration(s: ConfigRef) = configurations.find(_.configuration == s)
/** Gets the names of all resolved configurations. This `UpdateReport` contains one `ConfigurationReport` for each configuration in this list. */
def allConfigurations: Seq[String] = configurations.map(_.configuration)
def allConfigurations: Vector[ConfigRef] = configurations.map(_.configuration)
}

View File

@ -57,7 +57,7 @@ class DMSerializationSpec extends UnitSpec {
UpdateStats(0, 0, 0, false),
Map(new File("./foo") -> 0))
lazy val configurationReportExample =
ConfigurationReport("compile",
ConfigurationReport(ConfigRef("compile"),
Vector(moduleReportExample),
Vector(organizationArtifactReportExample))
lazy val organizationArtifactReportExample =

View File

@ -28,7 +28,7 @@ class IvyRepoSpec extends BaseIvySpecification with DependencyBuilders {
val report = ivyUpdate(m)
import Inside._
inside(report.configuration("compile").map(_.modules)) {
inside(report.configuration(ConfigRef("compile")).map(_.modules)) {
case Some(Seq(mr)) =>
inside(mr.artifacts) {
case Seq((ar, _)) =>
@ -82,7 +82,7 @@ class IvyRepoSpec extends BaseIvySpecification with DependencyBuilders {
log)
import Inside._
inside(report2.configuration("compile").map(_.modules)) {
inside(report2.configuration(ConfigRef("compile")).map(_.modules)) {
case Some(Seq(mr)) =>
inside(mr.artifacts) {
case Seq((ar, _)) =>

View File

@ -46,6 +46,7 @@ object Dependencies {
val scalaCompiler = Def.setting { "org.scala-lang" % "scala-compiler" % scalaVersion.value }
val scalaXml = scala211Module("scala-xml", "1.0.5")
val scalaTest = "org.scalatest" %% "scalatest" % "3.0.1" % Test
val scalaCheck = "org.scalacheck" %% "scalacheck" % "1.13.4" % Test
val sjsonnew = Def.setting { "com.eed3si9n" %% "sjson-new-core" % contrabandSjsonNewVersion.value }
val sjsonnewScalaJson = Def.setting { "com.eed3si9n" %% "sjson-new-scalajson" % contrabandSjsonNewVersion.value }
val gigahorseOkhttp = "com.eed3si9n" %% "gigahorse-okhttp" % "0.3.0"