diff --git a/build.sbt b/build.sbt index 442af5857..c59936eae 100644 --- a/build.sbt +++ b/build.sbt @@ -1236,6 +1236,7 @@ lazy val lmCore = (project in file("lm-core")) lmTestSettings, name := "librarymanagement-core", contrabandSjsonNewVersion := sjsonNewVersion, + Compile / generateContrabands / contrabandCodecParents += "sbt.librarymanagement.MemoizedFileFormats", libraryDependencies ++= Seq( jsch, // scalaReflect, diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ArtifactFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ArtifactFormats.scala index 2076e7385..71dfdd5d8 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ArtifactFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ArtifactFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ArtifactFormats { self: sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol => +trait ArtifactFormats { self: sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given ArtifactFormat: JsonFormat[sbt.librarymanagement.Artifact] = new JsonFormat[sbt.librarymanagement.Artifact] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.Artifact = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ArtifactTypeFilterFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ArtifactTypeFilterFormats.scala index b87866f97..3816627db 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ArtifactTypeFilterFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ArtifactTypeFilterFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ArtifactTypeFilterFormats { self: sjsonnew.BasicJsonProtocol => +trait ArtifactTypeFilterFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given ArtifactTypeFilterFormat: JsonFormat[sbt.librarymanagement.ArtifactTypeFilter] = new JsonFormat[sbt.librarymanagement.ArtifactTypeFilter] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ArtifactTypeFilter = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/CallerFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/CallerFormats.scala index efab505f7..88e8b50d6 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/CallerFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/CallerFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait CallerFormats { self: sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats => +trait CallerFormats { self: sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats => given 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 { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ChainedResolverFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ChainedResolverFormats.scala index c626c9d36..a8fe1ebb5 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ChainedResolverFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ChainedResolverFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ChainedResolverFormats { self: sbt.librarymanagement.ResolverFormats & sjsonnew.BasicJsonProtocol => +trait ChainedResolverFormats { self: sbt.librarymanagement.ResolverFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given ChainedResolverFormat: JsonFormat[sbt.librarymanagement.ChainedResolver] = new JsonFormat[sbt.librarymanagement.ChainedResolver] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ChainedResolver = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ChecksumFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ChecksumFormats.scala index c0d0a5007..3b4fb4b70 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ChecksumFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ChecksumFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ChecksumFormats { self: sjsonnew.BasicJsonProtocol => +trait ChecksumFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given ChecksumFormat: JsonFormat[sbt.librarymanagement.Checksum] = new JsonFormat[sbt.librarymanagement.Checksum] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.Checksum = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConfigurationReportFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConfigurationReportFormats.scala index 60172727d..fb5025706 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConfigurationReportFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConfigurationReportFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ConfigurationReportFormats { self: sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats & sbt.librarymanagement.OrganizationArtifactReportFormats => +trait ConfigurationReportFormats { self: sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats & sbt.librarymanagement.OrganizationArtifactReportFormats => given 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 { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConfigurationReportLiteFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConfigurationReportLiteFormats.scala index fa5d8df7e..1865f76cf 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConfigurationReportLiteFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConfigurationReportLiteFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ConfigurationReportLiteFormats { self: sbt.librarymanagement.OrganizationArtifactReportFormats & sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats => +trait ConfigurationReportLiteFormats { self: sbt.librarymanagement.OrganizationArtifactReportFormats & sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats => given ConfigurationReportLiteFormat: JsonFormat[sbt.internal.librarymanagement.ConfigurationReportLite] = new JsonFormat[sbt.internal.librarymanagement.ConfigurationReportLite] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.librarymanagement.ConfigurationReportLite = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConflictManagerFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConflictManagerFormats.scala index 88645c64b..0f2ac70c8 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConflictManagerFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ConflictManagerFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ConflictManagerFormats { self: sjsonnew.BasicJsonProtocol => +trait ConflictManagerFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given ConflictManagerFormat: JsonFormat[sbt.librarymanagement.ConflictManager] = new JsonFormat[sbt.librarymanagement.ConflictManager] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ConflictManager = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/DeveloperFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/DeveloperFormats.scala index 23dcbb1c0..27517a3ab 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/DeveloperFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/DeveloperFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait DeveloperFormats { self: sjsonnew.BasicJsonProtocol => +trait DeveloperFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given DeveloperFormat: JsonFormat[sbt.librarymanagement.Developer] = new JsonFormat[sbt.librarymanagement.Developer] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.Developer = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/FileConfigurationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/FileConfigurationFormats.scala index 72b427b3d..0fc6fb399 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/FileConfigurationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/FileConfigurationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait FileConfigurationFormats { self: sjsonnew.BasicJsonProtocol => +trait FileConfigurationFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given FileConfigurationFormat: JsonFormat[sbt.librarymanagement.FileConfiguration] = new JsonFormat[sbt.librarymanagement.FileConfiguration] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.FileConfiguration = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/FileRepositoryFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/FileRepositoryFormats.scala index a58609fe8..06c217d03 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/FileRepositoryFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/FileRepositoryFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait FileRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.FileConfigurationFormats => +trait FileRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.FileConfigurationFormats => given FileRepositoryFormat: JsonFormat[sbt.librarymanagement.FileRepository] = new JsonFormat[sbt.librarymanagement.FileRepository] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.FileRepository = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/GetClassifiersConfigurationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/GetClassifiersConfigurationFormats.scala index 4ac960bd9..5359f0ff8 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/GetClassifiersConfigurationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/GetClassifiersConfigurationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait GetClassifiersConfigurationFormats { self: sbt.librarymanagement.GetClassifiersModuleFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sbt.librarymanagement.UpdateConfigurationFormats & sbt.librarymanagement.RetrieveConfigurationFormats & sbt.librarymanagement.UpdateLoggingFormats & sbt.internal.librarymanagement.formats.LogicalClockFormats & sbt.librarymanagement.ArtifactTypeFilterFormats => +trait GetClassifiersConfigurationFormats { self: sbt.librarymanagement.GetClassifiersModuleFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sbt.librarymanagement.UpdateConfigurationFormats & sbt.librarymanagement.RetrieveConfigurationFormats & sbt.librarymanagement.UpdateLoggingFormats & sbt.internal.librarymanagement.formats.LogicalClockFormats & sbt.librarymanagement.ArtifactTypeFilterFormats => given GetClassifiersConfigurationFormat: JsonFormat[sbt.librarymanagement.GetClassifiersConfiguration] = new JsonFormat[sbt.librarymanagement.GetClassifiersConfiguration] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.GetClassifiersConfiguration = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/GetClassifiersModuleFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/GetClassifiersModuleFormats.scala index de2e23a91..8a3388d0a 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/GetClassifiersModuleFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/GetClassifiersModuleFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait GetClassifiersModuleFormats { self: sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats => +trait GetClassifiersModuleFormats { self: sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats => given GetClassifiersModuleFormat: JsonFormat[sbt.librarymanagement.GetClassifiersModule] = new JsonFormat[sbt.librarymanagement.GetClassifiersModule] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.GetClassifiersModule = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/InclExclRuleFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/InclExclRuleFormats.scala index 427b8edf3..72d2787f2 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/InclExclRuleFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/InclExclRuleFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait InclExclRuleFormats { self: sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sjsonnew.BasicJsonProtocol => +trait InclExclRuleFormats { self: sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given 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 { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/IvyFileConfigurationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/IvyFileConfigurationFormats.scala index 5749bf416..a5300350c 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/IvyFileConfigurationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/IvyFileConfigurationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait IvyFileConfigurationFormats { self: sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol => +trait IvyFileConfigurationFormats { self: sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given IvyFileConfigurationFormat: JsonFormat[sbt.librarymanagement.IvyFileConfiguration] = new JsonFormat[sbt.librarymanagement.IvyFileConfiguration] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.IvyFileConfiguration = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/IvyPathsFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/IvyPathsFormats.scala index 7a1a61579..ce21d58d1 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/IvyPathsFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/IvyPathsFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait IvyPathsFormats { self: sjsonnew.BasicJsonProtocol => +trait IvyPathsFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given IvyPathsFormat: JsonFormat[sbt.librarymanagement.IvyPaths] = new JsonFormat[sbt.librarymanagement.IvyPaths] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.IvyPaths = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/KeyFileAuthenticationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/KeyFileAuthenticationFormats.scala index 27cc498de..73cec9d6d 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/KeyFileAuthenticationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/KeyFileAuthenticationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait KeyFileAuthenticationFormats { self: sjsonnew.BasicJsonProtocol => +trait KeyFileAuthenticationFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given KeyFileAuthenticationFormat: JsonFormat[sbt.librarymanagement.KeyFileAuthentication] = new JsonFormat[sbt.librarymanagement.KeyFileAuthentication] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.KeyFileAuthentication = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/LibraryManagementCodec.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/LibraryManagementCodec.scala index c4924dac6..659765b68 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/LibraryManagementCodec.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/LibraryManagementCodec.scala @@ -6,6 +6,7 @@ package sbt.librarymanagement trait LibraryManagementCodec extends sbt.librarymanagement.ConfigRefFormats with sjsonnew.BasicJsonProtocol + with sbt.librarymanagement.MemoizedFileFormats with sbt.librarymanagement.RetrieveConfigurationFormats with sbt.librarymanagement.UpdateLoggingFormats with sbt.internal.librarymanagement.formats.LogicalClockFormats diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/LicenseFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/LicenseFormats.scala index 98d96b52b..073f994ee 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/LicenseFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/LicenseFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait LicenseFormats { self: sjsonnew.BasicJsonProtocol => +trait LicenseFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given LicenseFormat: JsonFormat[sbt.librarymanagement.License] = new JsonFormat[sbt.librarymanagement.License] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.License = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenCacheFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenCacheFormats.scala index 834b86d24..1690b2ffb 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenCacheFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenCacheFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait MavenCacheFormats { self: sjsonnew.BasicJsonProtocol => +trait MavenCacheFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given MavenCacheFormat: JsonFormat[sbt.librarymanagement.MavenCache] = new JsonFormat[sbt.librarymanagement.MavenCache] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.MavenCache = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenRepoFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenRepoFormats.scala index e2869c592..ff931f987 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenRepoFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenRepoFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait MavenRepoFormats { self: sjsonnew.BasicJsonProtocol => +trait MavenRepoFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given MavenRepoFormat: JsonFormat[sbt.librarymanagement.MavenRepo] = new JsonFormat[sbt.librarymanagement.MavenRepo] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.MavenRepo = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenRepositoryFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenRepositoryFormats.scala index a5f4b044e..dbc4f194c 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenRepositoryFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/MavenRepositoryFormats.scala @@ -6,6 +6,6 @@ package sbt.librarymanagement import _root_.sjsonnew.JsonFormat -trait MavenRepositoryFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MavenRepoFormats & sbt.librarymanagement.MavenCacheFormats => +trait MavenRepositoryFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.MavenRepoFormats & sbt.librarymanagement.MavenCacheFormats => given MavenRepositoryFormat: JsonFormat[sbt.librarymanagement.MavenRepository] = flatUnionFormat2[sbt.librarymanagement.MavenRepository, sbt.librarymanagement.MavenRepo, sbt.librarymanagement.MavenCache]("type") } diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleConfigurationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleConfigurationFormats.scala index a784b2bc3..1cf3d10e6 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleConfigurationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleConfigurationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ModuleConfigurationFormats { self: sbt.librarymanagement.ResolverFormats & sjsonnew.BasicJsonProtocol => +trait ModuleConfigurationFormats { self: sbt.librarymanagement.ResolverFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given ModuleConfigurationFormat: JsonFormat[sbt.librarymanagement.ModuleConfiguration] = new JsonFormat[sbt.librarymanagement.ModuleConfiguration] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ModuleConfiguration = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleDescriptorConfigurationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleDescriptorConfigurationFormats.scala index 07cd75fef..95b0e8ddd 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleDescriptorConfigurationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleDescriptorConfigurationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ModuleDescriptorConfigurationFormats { self: sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.ModuleInfoFormats & sbt.librarymanagement.LicenseFormats & sbt.librarymanagement.ScmInfoFormats & sbt.librarymanagement.DeveloperFormats & sbt.internal.librarymanagement.formats.NodeSeqFormat & sbt.librarymanagement.ConflictManagerFormats => +trait ModuleDescriptorConfigurationFormats { self: sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.ModuleInfoFormats & sbt.librarymanagement.LicenseFormats & sbt.librarymanagement.ScmInfoFormats & sbt.librarymanagement.DeveloperFormats & sbt.internal.librarymanagement.formats.NodeSeqFormat & sbt.librarymanagement.ConflictManagerFormats => given ModuleDescriptorConfigurationFormat: JsonFormat[sbt.librarymanagement.ModuleDescriptorConfiguration] = new JsonFormat[sbt.librarymanagement.ModuleDescriptorConfiguration] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ModuleDescriptorConfiguration = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleIDFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleIDFormats.scala index f9a0783f5..7ffd0925e 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleIDFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleIDFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ModuleIDFormats { self: sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats => +trait ModuleIDFormats { self: sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats => given ModuleIDFormat: JsonFormat[sbt.librarymanagement.ModuleID] = new JsonFormat[sbt.librarymanagement.ModuleID] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ModuleID = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfoFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfoFormats.scala index b46a87b4a..c6c70e04d 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfoFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleInfoFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ModuleInfoFormats { self: sbt.librarymanagement.LicenseFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.ScmInfoFormats & sbt.librarymanagement.DeveloperFormats => +trait ModuleInfoFormats { self: sbt.librarymanagement.LicenseFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.ScmInfoFormats & sbt.librarymanagement.DeveloperFormats => given ModuleInfoFormat: JsonFormat[sbt.librarymanagement.ModuleInfo] = new JsonFormat[sbt.librarymanagement.ModuleInfo] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ModuleInfo = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleReportFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleReportFormats.scala index f795a60e0..341e82ab5 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleReportFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleReportFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ModuleReportFormats { self: sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats => +trait ModuleReportFormats { self: sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats => given 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 { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleSettingsFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleSettingsFormats.scala index ea387f481..d1d50c8d7 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleSettingsFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ModuleSettingsFormats.scala @@ -6,6 +6,6 @@ package sbt.librarymanagement import _root_.sjsonnew.JsonFormat -trait ModuleSettingsFormats { self: sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.IvyFileConfigurationFormats & sbt.librarymanagement.PomConfigurationFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.ModuleInfoFormats & sbt.librarymanagement.LicenseFormats & sbt.librarymanagement.ScmInfoFormats & sbt.librarymanagement.DeveloperFormats & sbt.internal.librarymanagement.formats.NodeSeqFormat & sbt.librarymanagement.ConflictManagerFormats & sbt.librarymanagement.ModuleDescriptorConfigurationFormats => +trait ModuleSettingsFormats { self: sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.IvyFileConfigurationFormats & sbt.librarymanagement.PomConfigurationFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.ModuleInfoFormats & sbt.librarymanagement.LicenseFormats & sbt.librarymanagement.ScmInfoFormats & sbt.librarymanagement.DeveloperFormats & sbt.internal.librarymanagement.formats.NodeSeqFormat & sbt.librarymanagement.ConflictManagerFormats & sbt.librarymanagement.ModuleDescriptorConfigurationFormats => given ModuleSettingsFormat: JsonFormat[sbt.librarymanagement.ModuleSettings] = flatUnionFormat3[sbt.librarymanagement.ModuleSettings, sbt.librarymanagement.IvyFileConfiguration, sbt.librarymanagement.PomConfiguration, sbt.librarymanagement.ModuleDescriptorConfiguration]("type") } diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/OrganizationArtifactReportFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/OrganizationArtifactReportFormats.scala index f2d7ccac3..bfa545f4e 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/OrganizationArtifactReportFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/OrganizationArtifactReportFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait OrganizationArtifactReportFormats { self: sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats => +trait OrganizationArtifactReportFormats { self: sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats => given OrganizationArtifactReportFormat: JsonFormat[sbt.librarymanagement.OrganizationArtifactReport] = new JsonFormat[sbt.librarymanagement.OrganizationArtifactReport] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.OrganizationArtifactReport = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PasswordAuthenticationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PasswordAuthenticationFormats.scala index 1bdeec58a..952b92e3e 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PasswordAuthenticationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PasswordAuthenticationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait PasswordAuthenticationFormats { self: sjsonnew.BasicJsonProtocol => +trait PasswordAuthenticationFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given PasswordAuthenticationFormat: JsonFormat[sbt.librarymanagement.PasswordAuthentication] = new JsonFormat[sbt.librarymanagement.PasswordAuthentication] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.PasswordAuthentication = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PatternsBasedRepositoryFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PatternsBasedRepositoryFormats.scala index 9f66ff457..2134db910 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PatternsBasedRepositoryFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PatternsBasedRepositoryFormats.scala @@ -6,6 +6,6 @@ package sbt.librarymanagement import _root_.sjsonnew.JsonFormat -trait PatternsBasedRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.FileConfigurationFormats & sbt.librarymanagement.FileRepositoryFormats & sbt.librarymanagement.URLRepositoryFormats & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats & sbt.librarymanagement.SshRepositoryFormats & sbt.librarymanagement.SftpRepositoryFormats => +trait PatternsBasedRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.FileConfigurationFormats & sbt.librarymanagement.FileRepositoryFormats & sbt.librarymanagement.URLRepositoryFormats & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats & sbt.librarymanagement.SshRepositoryFormats & sbt.librarymanagement.SftpRepositoryFormats => given PatternsBasedRepositoryFormat: JsonFormat[sbt.librarymanagement.PatternsBasedRepository] = flatUnionFormat4[sbt.librarymanagement.PatternsBasedRepository, sbt.librarymanagement.FileRepository, sbt.librarymanagement.URLRepository, sbt.librarymanagement.SshRepository, sbt.librarymanagement.SftpRepository]("type") } diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PatternsFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PatternsFormats.scala index 741238c65..eba52750d 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PatternsFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PatternsFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait PatternsFormats { self: sjsonnew.BasicJsonProtocol => +trait PatternsFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given PatternsFormat: JsonFormat[sbt.librarymanagement.Patterns] = new JsonFormat[sbt.librarymanagement.Patterns] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.Patterns = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PomConfigurationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PomConfigurationFormats.scala index f39c9e200..6ecd4dbf2 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PomConfigurationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PomConfigurationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait PomConfigurationFormats { self: sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol => +trait PomConfigurationFormats { self: sbt.librarymanagement.ScalaModuleInfoFormats & sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given PomConfigurationFormat: JsonFormat[sbt.librarymanagement.PomConfiguration] = new JsonFormat[sbt.librarymanagement.PomConfiguration] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.PomConfiguration = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PublishConfigurationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PublishConfigurationFormats.scala index a3f1702a9..02c39e906 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/PublishConfigurationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/PublishConfigurationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait PublishConfigurationFormats { self: sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.UpdateLoggingFormats & sjsonnew.BasicJsonProtocol => +trait PublishConfigurationFormats { self: sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.UpdateLoggingFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given PublishConfigurationFormat: JsonFormat[sbt.librarymanagement.PublishConfiguration] = new JsonFormat[sbt.librarymanagement.PublishConfiguration] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.PublishConfiguration = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ResolverFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ResolverFormats.scala index 6489db8ef..5a37b7d2c 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ResolverFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ResolverFormats.scala @@ -6,6 +6,6 @@ package sbt.librarymanagement import _root_.sjsonnew.JsonFormat -trait ResolverFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.ChainedResolverFormats & sbt.librarymanagement.MavenRepoFormats & sbt.librarymanagement.MavenCacheFormats & sbt.librarymanagement.PatternsFormats & sbt.librarymanagement.FileConfigurationFormats & sbt.librarymanagement.FileRepositoryFormats & sbt.librarymanagement.URLRepositoryFormats & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats & sbt.librarymanagement.SshRepositoryFormats & sbt.librarymanagement.SftpRepositoryFormats => +trait ResolverFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.ChainedResolverFormats & sbt.librarymanagement.MavenRepoFormats & sbt.librarymanagement.MavenCacheFormats & sbt.librarymanagement.PatternsFormats & sbt.librarymanagement.FileConfigurationFormats & sbt.librarymanagement.FileRepositoryFormats & sbt.librarymanagement.URLRepositoryFormats & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats & sbt.librarymanagement.SshRepositoryFormats & sbt.librarymanagement.SftpRepositoryFormats => given ResolverFormat: JsonFormat[sbt.librarymanagement.Resolver] = flatUnionFormat7[sbt.librarymanagement.Resolver, sbt.librarymanagement.ChainedResolver, sbt.librarymanagement.MavenRepo, sbt.librarymanagement.MavenCache, sbt.librarymanagement.FileRepository, sbt.librarymanagement.URLRepository, sbt.librarymanagement.SshRepository, sbt.librarymanagement.SftpRepository]("type") } diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/RetrieveConfigurationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/RetrieveConfigurationFormats.scala index f53f9b714..a4411f2ab 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/RetrieveConfigurationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/RetrieveConfigurationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait RetrieveConfigurationFormats { self: sbt.librarymanagement.ConfigRefFormats & sjsonnew.BasicJsonProtocol => +trait RetrieveConfigurationFormats { self: sbt.librarymanagement.ConfigRefFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given RetrieveConfigurationFormat: JsonFormat[sbt.librarymanagement.RetrieveConfiguration] = new JsonFormat[sbt.librarymanagement.RetrieveConfiguration] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.RetrieveConfiguration = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ScalaModuleInfoFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ScalaModuleInfoFormats.scala index d40c4430c..31ace7457 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ScalaModuleInfoFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ScalaModuleInfoFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ScalaModuleInfoFormats { self: sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol => +trait ScalaModuleInfoFormats { self: sbt.librarymanagement.ConfigurationFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given ScalaModuleInfoFormat: JsonFormat[sbt.librarymanagement.ScalaModuleInfo] = new JsonFormat[sbt.librarymanagement.ScalaModuleInfo] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ScalaModuleInfo = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ScmInfoFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ScmInfoFormats.scala index b6937e2a9..68b56fe80 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/ScmInfoFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/ScmInfoFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait ScmInfoFormats { self: sjsonnew.BasicJsonProtocol => +trait ScmInfoFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given ScmInfoFormat: JsonFormat[sbt.librarymanagement.ScmInfo] = new JsonFormat[sbt.librarymanagement.ScmInfo] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.ScmInfo = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SftpRepositoryFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SftpRepositoryFormats.scala index 29db10206..1558e3781 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SftpRepositoryFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SftpRepositoryFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait SftpRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats => +trait SftpRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats => given SftpRepositoryFormat: JsonFormat[sbt.librarymanagement.SftpRepository] = new JsonFormat[sbt.librarymanagement.SftpRepository] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.SftpRepository = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshAuthenticationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshAuthenticationFormats.scala index 3830067cb..a760adedb 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshAuthenticationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshAuthenticationFormats.scala @@ -6,6 +6,6 @@ package sbt.librarymanagement import _root_.sjsonnew.JsonFormat -trait SshAuthenticationFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.PasswordAuthenticationFormats & sbt.librarymanagement.KeyFileAuthenticationFormats => +trait SshAuthenticationFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.PasswordAuthenticationFormats & sbt.librarymanagement.KeyFileAuthenticationFormats => given SshAuthenticationFormat: JsonFormat[sbt.librarymanagement.SshAuthentication] = flatUnionFormat2[sbt.librarymanagement.SshAuthentication, sbt.librarymanagement.PasswordAuthentication, sbt.librarymanagement.KeyFileAuthentication]("type") } diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshBasedRepositoryFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshBasedRepositoryFormats.scala index 7329f15a8..92153692e 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshBasedRepositoryFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshBasedRepositoryFormats.scala @@ -6,6 +6,6 @@ package sbt.librarymanagement import _root_.sjsonnew.JsonFormat -trait SshBasedRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats & sbt.librarymanagement.SshRepositoryFormats & sbt.librarymanagement.SftpRepositoryFormats => +trait SshBasedRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats & sbt.librarymanagement.SshRepositoryFormats & sbt.librarymanagement.SftpRepositoryFormats => given SshBasedRepositoryFormat: JsonFormat[sbt.librarymanagement.SshBasedRepository] = flatUnionFormat2[sbt.librarymanagement.SshBasedRepository, sbt.librarymanagement.SshRepository, sbt.librarymanagement.SftpRepository]("type") } diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshConnectionFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshConnectionFormats.scala index 1c67be466..601e0c4e2 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshConnectionFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshConnectionFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait SshConnectionFormats { self: sbt.librarymanagement.SshAuthenticationFormats & sjsonnew.BasicJsonProtocol => +trait SshConnectionFormats { self: sbt.librarymanagement.SshAuthenticationFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given SshConnectionFormat: JsonFormat[sbt.librarymanagement.SshConnection] = new JsonFormat[sbt.librarymanagement.SshConnection] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.SshConnection = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshRepositoryFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshRepositoryFormats.scala index 41177c410..7672ad9ef 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshRepositoryFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/SshRepositoryFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait SshRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats => +trait SshRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.SshConnectionFormats & sbt.librarymanagement.SshAuthenticationFormats => given SshRepositoryFormat: JsonFormat[sbt.librarymanagement.SshRepository] = new JsonFormat[sbt.librarymanagement.SshRepository] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.SshRepository = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/URLRepositoryFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/URLRepositoryFormats.scala index 58e3d1533..0467ed1a5 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/URLRepositoryFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/URLRepositoryFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait URLRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol => +trait URLRepositoryFormats { self: sbt.librarymanagement.PatternsFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given URLRepositoryFormat: JsonFormat[sbt.librarymanagement.URLRepository] = new JsonFormat[sbt.librarymanagement.URLRepository] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.URLRepository = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateConfigurationFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateConfigurationFormats.scala index 8c7973e19..9c69ffeea 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateConfigurationFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateConfigurationFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait UpdateConfigurationFormats { self: sbt.librarymanagement.RetrieveConfigurationFormats & sbt.librarymanagement.ConfigRefFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.UpdateLoggingFormats & sbt.internal.librarymanagement.formats.LogicalClockFormats & sbt.librarymanagement.ArtifactTypeFilterFormats => +trait UpdateConfigurationFormats { self: sbt.librarymanagement.RetrieveConfigurationFormats & sbt.librarymanagement.ConfigRefFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.UpdateLoggingFormats & sbt.internal.librarymanagement.formats.LogicalClockFormats & sbt.librarymanagement.ArtifactTypeFilterFormats => given UpdateConfigurationFormat: JsonFormat[sbt.librarymanagement.UpdateConfiguration] = new JsonFormat[sbt.librarymanagement.UpdateConfiguration] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.UpdateConfiguration = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateLoggingFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateLoggingFormats.scala index ec56d5fe1..20457db5b 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateLoggingFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateLoggingFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait UpdateLoggingFormats { self: sjsonnew.BasicJsonProtocol => +trait UpdateLoggingFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given UpdateLoggingFormat: JsonFormat[sbt.librarymanagement.UpdateLogging] = new JsonFormat[sbt.librarymanagement.UpdateLogging] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.UpdateLogging = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateReportFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateReportFormats.scala index ca5d6a447..4fe8ab5e7 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateReportFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateReportFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait UpdateReportFormats { self: sbt.librarymanagement.ConfigurationReportFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats & sbt.librarymanagement.OrganizationArtifactReportFormats & sbt.librarymanagement.UpdateStatsFormats => +trait UpdateReportFormats { self: sbt.librarymanagement.ConfigurationReportFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats & sbt.librarymanagement.OrganizationArtifactReportFormats & sbt.librarymanagement.UpdateStatsFormats => given UpdateReportFormat: JsonFormat[sbt.librarymanagement.UpdateReport] = new JsonFormat[sbt.librarymanagement.UpdateReport] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.UpdateReport = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateReportLiteFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateReportLiteFormats.scala index e45f5356f..bf86fd15b 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateReportLiteFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateReportLiteFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait UpdateReportLiteFormats { self: sbt.librarymanagement.ConfigurationReportLiteFormats & sbt.librarymanagement.OrganizationArtifactReportFormats & sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats => +trait UpdateReportLiteFormats { self: sbt.librarymanagement.ConfigurationReportLiteFormats & sbt.librarymanagement.OrganizationArtifactReportFormats & sbt.librarymanagement.ModuleReportFormats & sbt.librarymanagement.ModuleIDFormats & sbt.librarymanagement.ArtifactFormats & sbt.librarymanagement.ConfigRefFormats & sbt.librarymanagement.ChecksumFormats & sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats & sbt.librarymanagement.InclExclRuleFormats & sbt.librarymanagement.CrossVersionFormats & sbt.librarymanagement.DisabledFormats & sbt.librarymanagement.BinaryFormats & sbt.librarymanagement.ConstantFormats & sbt.librarymanagement.PatchFormats & sbt.librarymanagement.FullFormats & sbt.librarymanagement.For3Use2_13Formats & sbt.librarymanagement.For2_13Use3Formats & sbt.librarymanagement.CallerFormats => given UpdateReportLiteFormat: JsonFormat[sbt.internal.librarymanagement.UpdateReportLite] = new JsonFormat[sbt.internal.librarymanagement.UpdateReportLite] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.librarymanagement.UpdateReportLite = { __jsOpt match { diff --git a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateStatsFormats.scala b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateStatsFormats.scala index f9a729421..ee6c308d1 100644 --- a/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateStatsFormats.scala +++ b/lm-core/src/main/contraband-scala/sbt/librarymanagement/UpdateStatsFormats.scala @@ -5,7 +5,7 @@ // DO NOT EDIT MANUALLY package sbt.librarymanagement import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } -trait UpdateStatsFormats { self: sjsonnew.BasicJsonProtocol => +trait UpdateStatsFormats { self: sjsonnew.BasicJsonProtocol & sbt.librarymanagement.MemoizedFileFormats => given UpdateStatsFormat: JsonFormat[sbt.librarymanagement.UpdateStats] = new JsonFormat[sbt.librarymanagement.UpdateStats] { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.librarymanagement.UpdateStats = { __jsOpt match { diff --git a/lm-core/src/main/scala/sbt/librarymanagement/MemoizedFileFormats.scala b/lm-core/src/main/scala/sbt/librarymanagement/MemoizedFileFormats.scala new file mode 100644 index 000000000..f0ee3c36d --- /dev/null +++ b/lm-core/src/main/scala/sbt/librarymanagement/MemoizedFileFormats.scala @@ -0,0 +1,76 @@ +/* + * sbt + * Copyright 2023, Scala center + * Copyright 2011 - 2022, Lightbend, Inc. + * Copyright 2008 - 2010, Mark Harrah + * Licensed under Apache License 2.0 (see LICENSE) + */ + +package sbt.librarymanagement + +import java.io.File +import java.net.URI +import java.nio.file.{ Files, Path, Paths } +import java.nio.file.attribute.BasicFileAttributes +import java.nio.ByteBuffer +import scala.util.Try +import com.github.benmanes.caffeine.cache.{ Cache, Caffeine } +import sbt.io.IO +import sjsonnew.{ FileIsoStringLongs, HashUtil, IsoStringLong } + +/** + * Overrides sjson-new's `File`/`Path` isos so the sha256 content hash they embed is memoized by + * (path, size, lastModified) instead of re-read from disk on every serialization. Same + * invalidation as the digest cache in sbt.util.CacheImplicits (sbt/sbt#8363): a changed file + * changes its size or timestamp and is re-hashed. + * + * Mix in after `BasicJsonProtocol` (via `contrabandCodecParents`) so these overrides win in + * linearization. + */ +trait MemoizedFileFormats extends FileIsoStringLongs { + import MemoizedFileFormats.{ Entry, hashCache } + + // sjsonnew.HashUtil.sha256ToLong is private[sjsonnew]; same semantics via the public sha256 + private def hashFile(path: Path): Long = { + val buf = HashUtil.sha256(path.toFile()) + if buf.length < 8 then 0L else ByteBuffer.wrap(buf).getLong() + } + + private def memoizedHash(path: Path): Long = + Try(Files.readAttributes(path, classOf[BasicFileAttributes])).toOption match { + case None => + // no size/mtime to validate a cache entry against, so hash uncached + if Files.isRegularFile(path) then hashFile(path) else 0L + case Some(attrs) => + val key = path.toString + val mtime = attrs.lastModifiedTime.toMillis + val cached = hashCache.getIfPresent(key) + if (cached != null && cached.size == attrs.size && cached.mtime == mtime) cached.hash + else { + val h = if (attrs.isDirectory) 0L else hashFile(path) + // 0L is the sentinel for directories and files that vanish mid-hash, not a + // content hash; caching it would keep serving 0 for the key + if (h != 0L) hashCache.put(key, new Entry(attrs.size, mtime, h)) + h + } + } + + override implicit lazy val fileStringLongIso: IsoStringLong[File] = IsoStringLong.iso[File]( + file => (IO.toURI(file).toASCIIString, memoizedHash(file.toPath())), + p => IO.toFile(new URI(p._1)) + ) + + override implicit lazy val pathStringLongIso: IsoStringLong[Path] = IsoStringLong.iso[Path]( + path => (path.toString, memoizedHash(path)), + p => Paths.get(p._1) + ) +} + +private[librarymanagement] object MemoizedFileFormats { + private final class Entry(val size: Long, val mtime: Long, val hash: Long) + + // shared by every mix-in of the trait; a per-instance cache would re-hash the same + // files for each codec object that extends MemoizedFileFormats + private val hashCache: Cache[String, Entry] = + Caffeine.newBuilder().maximumSize(65536).build[String, Entry]() +} diff --git a/lm-core/src/test/scala/sbt/librarymanagement/MemoizedFileFormatsSpec.scala b/lm-core/src/test/scala/sbt/librarymanagement/MemoizedFileFormatsSpec.scala new file mode 100644 index 000000000..cc356acae --- /dev/null +++ b/lm-core/src/test/scala/sbt/librarymanagement/MemoizedFileFormatsSpec.scala @@ -0,0 +1,133 @@ +package sbt.librarymanagement + +import java.io.{ File, PrintWriter, StringWriter } +import java.nio.ByteBuffer +import java.nio.file.{ Files, Path } +import java.nio.file.attribute.FileTime + +import sbt.io.IO +import sjsonnew.HashUtil +import sjsonnew.support.scalajson.unsafe.{ CompactPrinter, Converter } +import verify.BasicTestSuite + +object MemoizedFileFormatsSpec extends BasicTestSuite: + private object Codec extends MemoizedFileFormats + import Codec.{ fileStringLongIso, pathStringLongIso } + + // sjsonnew.HashUtil.sha256ToLong is private[sjsonnew]; reproduce its semantics via the + // public sha256 so the tests can compare against the stock (non-memoized) hash. + private def stockHash(path: Path): Long = + val buf = HashUtil.sha256(path.toFile()) + if buf.length < 8 then 0L else ByteBuffer.wrap(buf).getLong() + + private def withTempFile[A](content: String)(f: Path => A): A = + IO.withTemporaryFile("memoized-file-formats", ".txt") { file => + IO.write(file, content) + f(file.toPath()) + } + + test("fileStringLongIso computes the same hash as the stock sha256"): + withTempFile("hello, world") { path => + val (_, hash) = fileStringLongIso.to(path.toFile()) + assert(hash == stockHash(path)) + } + + test("pathStringLongIso computes the same hash as the stock sha256"): + withTempFile("hello, world") { path => + val (_, hash) = pathStringLongIso.to(path) + assert(hash == stockHash(path)) + } + + test("hash is served from the cache while (path, size, mtime) is unchanged"): + withTempFile("aaaa") { path => + val mtime = Files.getLastModifiedTime(path) + val (_, first) = fileStringLongIso.to(path.toFile()) + // Same-length content plus a restored mtime keeps the (path, size, mtime) cache key + // identical, so a recomputation would be observable as a hash change. + Files.write(path, "bbbb".getBytes("UTF-8")) + Files.setLastModifiedTime(path, mtime) + val (_, second) = fileStringLongIso.to(path.toFile()) + assert(second == first) + assert(second != stockHash(path)) + } + + test("hash is recomputed when the mtime changes"): + withTempFile("aaaa") { path => + val mtime = Files.getLastModifiedTime(path) + val (_, first) = fileStringLongIso.to(path.toFile()) + Files.write(path, "bbbb".getBytes("UTF-8")) + // A full second ahead so the change survives filesystems with coarse mtime granularity. + Files.setLastModifiedTime(path, FileTime.fromMillis(mtime.toMillis + 1000)) + val (_, second) = fileStringLongIso.to(path.toFile()) + assert(second != first) + assert(second == stockHash(path)) + } + + test("hash is recomputed when the size changes"): + withTempFile("aaaa") { path => + val mtime = Files.getLastModifiedTime(path) + val (_, first) = fileStringLongIso.to(path.toFile()) + Files.write(path, "bbbbbb".getBytes("UTF-8")) + Files.setLastModifiedTime(path, mtime) + val (_, second) = fileStringLongIso.to(path.toFile()) + assert(second != first) + assert(second == stockHash(path)) + } + + test("a missing file hashes to 0"): + IO.withTemporaryDirectory { dir => + val missing = new File(dir, "does-not-exist.txt") + val (_, hash) = fileStringLongIso.to(missing) + assert(hash == 0L) + } + + test("a directory hashes to 0"): + IO.withTemporaryDirectory { dir => + val (_, hash) = fileStringLongIso.to(dir) + assert(hash == 0L) + } + + test("round-trips a File through the iso"): + withTempFile("hello") { path => + val file = path.toFile() + val pair = fileStringLongIso.to(file) + assert(fileStringLongIso.from(pair).getCanonicalFile == file.getCanonicalFile) + } + + test("the memoized iso is wired into the generated LibraryManagementCodec"): + IO.withTemporaryDirectory { dir => + val jar = new File(dir, "lib.jar") + IO.write(jar, "aaaa") + val mtime = Files.getLastModifiedTime(jar.toPath()) + val ur = report(dir, jar) + val before = render(ur) + // 0 is the missing-file/directory sentinel; a real hash proves the artifact was + // actually hashed, so the unchanged-render assertion below is meaningful. + assert(before.contains("\"second\":")) + assert(!before.contains("\"second\":0,")) + // Same-size rewrite plus a restored mtime keeps the cache key identical; an unchanged + // render then proves the generated codec goes through the memoized iso (the wiring). + IO.write(jar, "bbbb") + Files.setLastModifiedTime(jar.toPath(), mtime) + val after = render(ur) + assert(after == before) + } + + private def render(ur: UpdateReport): String = + val js = Converter.toJson(ur)(using LibraryManagementCodec.UpdateReportFormat).get + val out = new StringWriter + CompactPrinter.print(js, new PrintWriter(out)) + out.toString + + private def report(dir: File, jar: File): UpdateReport = + val modId = ModuleID("org.example", "lib", "1.0.0") + val artifact = Artifact("lib", "jar", "jar", None, Vector.empty, None, Map.empty, None) + val mr = ModuleReport(modId, Vector((artifact, jar)), Vector.empty) + val descriptor = new File(dir, "ivy.xml") + IO.touch(descriptor) + UpdateReport( + descriptor, + Vector(ConfigurationReport(ConfigRef("compile"), Vector(mr), Vector.empty)), + UpdateStats(0L, 0L, 0L, false), + Map.empty + )