blob: 5ed9953d9da5f3aa5c0de6e5925cc2673c0fcd20 (
plain) (
tree)
|
|
package flow
import sbt._
import sbt.Keys._
import ch.jodersky.sbt.jni.plugins.JniPackaging
import ch.jodersky.sbt.jni.plugins.JniPackaging.autoImport._
import bintray._
import bintray.BintrayPlugin.autoImport._
/** Custom bintray tasks. */
object CustomBintray extends AutoPlugin {
override def requires = JniPackaging && BintrayPlugin
override def trigger = allRequirements
object autoImport {
val unmanagedNativeZip = taskKey[File](
"Packages unmanaged native libraries in a zip file."
)
val publishNativeZip = taskKey[Unit](
"Signs and publishes native zip files to a generic bintray repository."
)
}
import autoImport._
lazy val settings: Seq[Setting[_]] = Seq(
unmanagedNativeZip := {
val out = target.value / (name.value + "-native.zip")
val files: Seq[File] = unmanagedNativeDirectories.value flatMap {dir =>
(dir ** "*").get.filter(_.isFile)
}
val baseDirectories: Seq[File] = unmanagedNativeDirectories.value
val mappings: Seq[(File,String)] = files pair Path.relativeTo(baseDirectories)
IO.zip(mappings, out)
out
},
publishNativeZip := {
val credsFile = bintrayCredentialsFile.value
val btyOrg = bintrayOrganization.value
val repoName = "generic"
val zip = unmanagedNativeZip.value
Bintray.withRepo(credsFile, btyOrg, repoName, prompt = false) { repo =>
repo.upload(
"flow",
version.value,
zip.name,
zip,
streams.value.log
)
}
}
)
override def projectSettings = inConfig(Compile)(settings)
}
|