91 lines
2.7 KiB
Scala
91 lines
2.7 KiB
Scala
/*
|
|
* Copyright (C) 2009-2019 Lightbend Inc. <https://www.lightbend.com>
|
|
*/
|
|
|
|
package akka
|
|
|
|
import sbt._
|
|
import sbt.Keys._
|
|
import java.io.File
|
|
import sbtwhitesource.WhiteSourcePlugin.autoImport.whitesourceIgnore
|
|
|
|
object Publish extends AutoPlugin {
|
|
|
|
val defaultPublishTo = settingKey[File]("Default publish directory")
|
|
|
|
override def trigger = allRequirements
|
|
|
|
override lazy val projectSettings = Seq(
|
|
pomExtra := akkaPomExtra,
|
|
publishTo := akkaPublishTo.value,
|
|
credentials ++= akkaCredentials,
|
|
organizationName := "Lightbend Inc.",
|
|
organizationHomepage := Some(url("https://www.lightbend.com")),
|
|
publishMavenStyle := true,
|
|
pomIncludeRepository := { x =>
|
|
false
|
|
},
|
|
defaultPublishTo := target.value / "repository")
|
|
|
|
def akkaPomExtra = {
|
|
<inceptionYear>2009</inceptionYear>
|
|
<developers>
|
|
<developer>
|
|
<id>akka-contributors</id>
|
|
<name>Akka Contributors</name>
|
|
<email>akka-dev@googlegroups.com</email>
|
|
<url>https://github.com/akka/akka/graphs/contributors</url>
|
|
</developer>
|
|
</developers>
|
|
}
|
|
|
|
private def akkaPublishTo = Def.setting {
|
|
sonatypeRepo(version.value).orElse(localRepo(defaultPublishTo.value))
|
|
}
|
|
|
|
private def sonatypeRepo(version: String): Option[Resolver] =
|
|
Option(sys.props("publish.maven.central")).filter(_.toLowerCase == "true").map { _ =>
|
|
val nexus = "https://oss.sonatype.org/"
|
|
if (version.endsWith("-SNAPSHOT")) "snapshots".at(nexus + "content/repositories/snapshots")
|
|
else "releases".at(nexus + "service/local/staging/deploy/maven2")
|
|
}
|
|
|
|
private def localRepo(repository: File) =
|
|
Some(Resolver.file("Default Local Repository", repository))
|
|
|
|
private def akkaCredentials: Seq[Credentials] =
|
|
Option(System.getProperty("akka.publish.credentials", null)).map(f => Credentials(new File(f))).toSeq
|
|
}
|
|
|
|
/**
|
|
* For projects that are not to be published.
|
|
*/
|
|
object NoPublish extends AutoPlugin {
|
|
override def requires = plugins.JvmPlugin
|
|
|
|
override def projectSettings =
|
|
Seq(skip in publish := true, sources in (Compile, doc) := Seq.empty, whitesourceIgnore := true)
|
|
}
|
|
|
|
object DeployRsync extends AutoPlugin {
|
|
import scala.sys.process._
|
|
import sbt.complete.DefaultParsers._
|
|
|
|
override def requires = plugins.JvmPlugin
|
|
|
|
trait Keys {
|
|
val deployRsyncArtifact = taskKey[Seq[(File, String)]]("File or directory and a path to deploy to")
|
|
val deployRsync = inputKey[Unit]("Deploy using SCP")
|
|
}
|
|
|
|
object autoImport extends Keys
|
|
import autoImport._
|
|
|
|
override def projectSettings =
|
|
Seq(deployRsync := {
|
|
val (_, host) = (Space ~ StringBasic).parsed
|
|
deployRsyncArtifact.value.foreach {
|
|
case (from, to) => s"rsync -rvz $from/ $host:$to" !
|
|
}
|
|
})
|
|
}
|