2017-04-02 21:51:11 +02:00
|
|
|
|
|
|
|
|
import sbt._
|
|
|
|
|
import sbt.Defaults.itSettings
|
|
|
|
|
import sbt.Keys._
|
2017-11-01 17:07:33 +01:00
|
|
|
import sbt.ScriptedPlugin.autoImport._
|
2017-11-01 00:27:45 +01:00
|
|
|
import sbt.ScriptedPlugin.{projectSettings => scriptedSettings}
|
|
|
|
|
import sbt.librarymanagement.CrossVersion.partialVersion
|
2017-04-02 21:51:11 +02:00
|
|
|
|
|
|
|
|
object Aliases {
|
|
|
|
|
|
|
|
|
|
def libs = libraryDependencies
|
|
|
|
|
|
2017-11-01 17:07:33 +01:00
|
|
|
def withScriptedTests = {
|
|
|
|
|
|
|
|
|
|
// Both tweaked tasks adapted from the scripted sources.
|
|
|
|
|
// No idea why this is required to run the scripted tests for sbt 0.13.
|
|
|
|
|
|
|
|
|
|
def tweakedScriptedRunTask = Def.task {
|
|
|
|
|
// similar to https://github.com/sbt/sbt/issues/3245#issuecomment-306045952
|
|
|
|
|
val cls = scriptedTests.value.getClass
|
|
|
|
|
|
|
|
|
|
if (sbtVersion.in(pluginCrossBuild).value.startsWith("0.13."))
|
|
|
|
|
cls.getMethod("run",
|
|
|
|
|
classOf[File],
|
|
|
|
|
classOf[Boolean],
|
|
|
|
|
classOf[Array[String]],
|
|
|
|
|
classOf[File],
|
|
|
|
|
classOf[Array[String]]
|
|
|
|
|
)
|
|
|
|
|
else
|
|
|
|
|
cls.getMethod("run",
|
|
|
|
|
classOf[File],
|
|
|
|
|
classOf[Boolean],
|
|
|
|
|
classOf[Array[String]],
|
|
|
|
|
classOf[File],
|
|
|
|
|
classOf[Array[String]],
|
|
|
|
|
classOf[java.util.List[File]]
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def tweakedScriptedTask = Def.inputTask {
|
2018-01-05 18:52:14 +01:00
|
|
|
import scala.language.reflectiveCalls
|
2017-11-01 17:07:33 +01:00
|
|
|
|
|
|
|
|
val args = ScriptedPlugin
|
|
|
|
|
.asInstanceOf[{
|
|
|
|
|
def scriptedParser(f: File): complete.Parser[Seq[String]]
|
|
|
|
|
}]
|
|
|
|
|
.scriptedParser(sbtTestDirectory.value)
|
|
|
|
|
.parsed
|
|
|
|
|
|
|
|
|
|
scriptedDependencies.value
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if (sbtVersion.in(pluginCrossBuild).value.startsWith("0.13."))
|
|
|
|
|
scriptedRun.value.invoke(
|
|
|
|
|
scriptedTests.value,
|
|
|
|
|
sbtTestDirectory.value,
|
|
|
|
|
scriptedBufferLog.value: java.lang.Boolean,
|
|
|
|
|
args.toArray,
|
|
|
|
|
sbtLauncher.value,
|
|
|
|
|
scriptedLaunchOpts.value.toArray
|
|
|
|
|
)
|
|
|
|
|
else
|
|
|
|
|
scriptedRun.value.invoke(
|
|
|
|
|
scriptedTests.value,
|
|
|
|
|
sbtTestDirectory.value,
|
|
|
|
|
scriptedBufferLog.value: java.lang.Boolean,
|
|
|
|
|
args.toArray,
|
|
|
|
|
sbtLauncher.value,
|
|
|
|
|
scriptedLaunchOpts.value.toArray,
|
|
|
|
|
new java.util.ArrayList()
|
|
|
|
|
)
|
|
|
|
|
} catch {
|
|
|
|
|
case e: java.lang.reflect.InvocationTargetException =>
|
|
|
|
|
throw e.getCause
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2017-11-01 00:27:45 +01:00
|
|
|
// see https://github.com/sbt/sbt/issues/3325#issuecomment-315670424
|
|
|
|
|
scriptedSettings.filterNot(_.key.key.label == libraryDependencies.key.label) ++ Seq(
|
|
|
|
|
libraryDependencies ++= {
|
|
|
|
|
scalaBinaryVersion.value match {
|
|
|
|
|
case "2.10" | "2.12" =>
|
|
|
|
|
partialVersion(scriptedSbt.value) match {
|
|
|
|
|
case Some((0, 13)) =>
|
|
|
|
|
Seq(
|
|
|
|
|
"org.scala-sbt" % "scripted-sbt" % scriptedSbt.value % ScriptedConf,
|
|
|
|
|
"org.scala-sbt" % "sbt-launch" % scriptedSbt.value % ScriptedLaunchConf
|
|
|
|
|
)
|
|
|
|
|
case Some((1, _)) =>
|
|
|
|
|
Seq(
|
|
|
|
|
"org.scala-sbt" %% "scripted-sbt" % scriptedSbt.value % ScriptedConf,
|
|
|
|
|
"org.scala-sbt" % "sbt-launch" % scriptedSbt.value % ScriptedLaunchConf
|
|
|
|
|
)
|
|
|
|
|
case other =>
|
|
|
|
|
sys.error(s"Unrecognized sbt partial version: $other")
|
|
|
|
|
}
|
|
|
|
|
case _ =>
|
|
|
|
|
Seq()
|
|
|
|
|
}
|
2017-11-01 17:07:33 +01:00
|
|
|
},
|
|
|
|
|
scriptedRun := tweakedScriptedRunTask.value,
|
|
|
|
|
scripted := tweakedScriptedTask.evaluated
|
|
|
|
|
)
|
|
|
|
|
}
|
2017-11-01 00:27:45 +01:00
|
|
|
|
2017-04-02 21:51:11 +02:00
|
|
|
def hasITs = itSettings
|
|
|
|
|
|
|
|
|
|
def ShadingPlugin = coursier.ShadingPlugin
|
|
|
|
|
|
2017-05-15 15:32:48 +02:00
|
|
|
def root = file(".")
|
|
|
|
|
|
2017-05-15 15:32:48 +02:00
|
|
|
|
|
|
|
|
implicit class ProjectOps(val proj: Project) extends AnyVal {
|
|
|
|
|
def dummy: Project =
|
|
|
|
|
proj.in(file(s"target/${proj.id}"))
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-02 21:51:11 +02:00
|
|
|
}
|