mirror of https://github.com/sbt/sbt.git
61 lines
2.2 KiB
Scala
61 lines
2.2 KiB
Scala
import sbt._
|
|
import Keys._
|
|
import com.typesafe.sbt.SbtPgp
|
|
import com.typesafe.sbt.packager.universal.{ UniversalPlugin, UniversalDeployPlugin }
|
|
import com.typesafe.sbt.packager.debian.{ DebianPlugin, DebianDeployPlugin }
|
|
import com.typesafe.sbt.packager.rpm.{ RpmPlugin, RpmDeployPlugin }
|
|
import com.typesafe.sbt.pgp.gpgExtension
|
|
|
|
object PackageSignerPlugin extends sbt.AutoPlugin {
|
|
override def trigger = allRequirements
|
|
override def requires = SbtPgp && UniversalDeployPlugin && DebianDeployPlugin && RpmDeployPlugin
|
|
|
|
import com.typesafe.sbt.pgp.PgpKeys._
|
|
import UniversalPlugin.autoImport._
|
|
import DebianPlugin.autoImport._
|
|
import RpmPlugin.autoImport._
|
|
|
|
override def projectSettings: Seq[Setting[_]] =
|
|
inConfig(Universal)(packageSignerSettings) ++
|
|
inConfig(Debian)(packageSignerSettings) ++
|
|
inConfig(Rpm)(packageSignerSettings)
|
|
|
|
def subExtension(art: Artifact, ext: String): Artifact =
|
|
art.copy(extension = ext)
|
|
|
|
def packageSignerSettings: Seq[Setting[_]] = Seq(
|
|
signedArtifacts := {
|
|
val artifacts = packagedArtifacts.value
|
|
val r = pgpSigner.value
|
|
val skipZ = (skip in pgpSigner).value
|
|
val s = streams.value
|
|
if (!skipZ) {
|
|
artifacts flatMap { case (art, f) =>
|
|
Seq(art -> f,
|
|
subExtension(art, art.extension + gpgExtension) ->
|
|
r.sign(f, file(f.getAbsolutePath + gpgExtension), s))
|
|
}
|
|
}
|
|
else artifacts
|
|
},
|
|
publishSignedConfiguration := Classpaths.publishConfig(
|
|
signedArtifacts.value,
|
|
None,
|
|
resolverName = Classpaths.getPublishTo(publishTo.value).name,
|
|
checksums = (checksums in publish).value,
|
|
logging = ivyLoggingLevel.value,
|
|
overwrite = isSnapshot.value),
|
|
publishLocalSignedConfiguration := Classpaths.publishConfig(
|
|
signedArtifacts.value,
|
|
None,
|
|
resolverName = "local",
|
|
checksums = (checksums in publish).value,
|
|
logging = ivyLoggingLevel.value,
|
|
overwrite = isSnapshot.value),
|
|
publishSigned := Classpaths.publishTask(publishSignedConfiguration, deliver).value,
|
|
publishLocalSigned := Classpaths.publishTask(publishLocalSignedConfiguration, deliver).value
|
|
)
|
|
|
|
}
|
|
|