mirror of https://github.com/sbt/sbt.git
support configuring checksums differently for publish, publish-local, update, and update-sbt-classifiers. fixes #115
This commit is contained in:
parent
987dc0f3ba
commit
b122934936
|
|
@ -19,10 +19,10 @@ import core.report.{ArtifactDownloadReport,ResolveReport}
|
||||||
import core.resolve.ResolveOptions
|
import core.resolve.ResolveOptions
|
||||||
import core.retrieve.RetrieveOptions
|
import core.retrieve.RetrieveOptions
|
||||||
import plugins.parser.m2.{PomModuleDescriptorParser,PomModuleDescriptorWriter}
|
import plugins.parser.m2.{PomModuleDescriptorParser,PomModuleDescriptorWriter}
|
||||||
import plugins.resolver.DependencyResolver
|
import plugins.resolver.{BasicResolver, DependencyResolver}
|
||||||
|
|
||||||
final class DeliverConfiguration(val deliverIvyPattern: String, val status: String, val configurations: Option[Seq[Configuration]], val logging: UpdateLogging.Value)
|
final class DeliverConfiguration(val deliverIvyPattern: String, val status: String, val configurations: Option[Seq[Configuration]], val logging: UpdateLogging.Value)
|
||||||
final class PublishConfiguration(val ivyFile: Option[File], val resolverName: String, val artifacts: Map[Artifact, File], val logging: UpdateLogging.Value)
|
final class PublishConfiguration(val ivyFile: Option[File], val resolverName: String, val artifacts: Map[Artifact, File], val checksums: Seq[String], val logging: UpdateLogging.Value)
|
||||||
|
|
||||||
final class UpdateConfiguration(val retrieve: Option[RetrieveConfiguration], val missingOk: Boolean, val logging: UpdateLogging.Value)
|
final class UpdateConfiguration(val retrieve: Option[RetrieveConfiguration], val missingOk: Boolean, val logging: UpdateLogging.Value)
|
||||||
final class RetrieveConfiguration(val retrieveDirectory: File, val outputPattern: String)
|
final class RetrieveConfiguration(val retrieveDirectory: File, val outputPattern: String)
|
||||||
|
|
@ -94,9 +94,18 @@ object IvyActions
|
||||||
val ivyArtifact = ivyFile map { file => (MDArtifact.newIvyArtifact(md), file) }
|
val ivyArtifact = ivyFile map { file => (MDArtifact.newIvyArtifact(md), file) }
|
||||||
val is = crossIvyScala(module.moduleSettings)
|
val is = crossIvyScala(module.moduleSettings)
|
||||||
val as = mapArtifacts(md, is, artifacts) ++ ivyArtifact.toList
|
val as = mapArtifacts(md, is, artifacts) ++ ivyArtifact.toList
|
||||||
publish(md, as, resolver, overwrite = true)
|
withChecksums(resolver, checksums) { publish(md, as, resolver, overwrite = true) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private[this] def withChecksums[T](resolver: DependencyResolver, checksums: Seq[String])(act: => T): T =
|
||||||
|
resolver match { case br: BasicResolver => withChecksums(br, checksums)(act); case _ => act }
|
||||||
|
private[this] def withChecksums[T](resolver: BasicResolver, checksums: Seq[String])(act: => T): T =
|
||||||
|
{
|
||||||
|
val previous = resolver.getChecksumAlgorithms
|
||||||
|
resolver.setChecksums(checksums mkString ",")
|
||||||
|
try { act }
|
||||||
|
finally { resolver.setChecksums(previous mkString ",") }
|
||||||
|
}
|
||||||
private def crossIvyScala(moduleSettings: ModuleSettings): Option[IvyScala] =
|
private def crossIvyScala(moduleSettings: ModuleSettings): Option[IvyScala] =
|
||||||
moduleSettings match {
|
moduleSettings match {
|
||||||
case i: InlineConfiguration if i.module.crossVersion => i.ivyScala
|
case i: InlineConfiguration if i.module.crossVersion => i.ivyScala
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue