sbt/project/Util.scala

41 lines
1.3 KiB
Scala
Raw Normal View History

2015-08-20 06:18:02 +02:00
import sbt._
import Keys._
object Util {
lazy val scalaKeywords = TaskKey[Set[String]]("scala-keywords")
lazy val generateKeywords = TaskKey[File]("generateKeywords")
lazy val javaOnlySettings = Seq[Setting[_]](
2015-09-05 07:42:34 +02:00
crossPaths := false,
2015-08-20 06:18:02 +02:00
compileOrder := CompileOrder.JavaThenScala,
2016-11-09 15:06:48 +01:00
unmanagedSourceDirectories in Compile := Seq((javaSource in Compile).value),
crossScalaVersions := Seq(Dependencies.scala211),
autoScalaLibrary := false
2015-08-20 06:18:02 +02:00
)
def getScalaKeywords: Set[String] =
{
val g = new scala.tools.nsc.Global(new scala.tools.nsc.Settings)
g.nme.keywords.map(_.toString)
}
def writeScalaKeywords(base: File, keywords: Set[String]): File =
{
val init = keywords.map(tn => '"' + tn + '"').mkString("Set(", ", ", ")")
val ObjectName = "ScalaKeywords"
val PackageName = "sbt.internal.util"
2015-08-20 06:18:02 +02:00
val keywordsSrc =
"""package %s
object %s {
val values = %s
}""".format(PackageName, ObjectName, init)
val out = base / PackageName.replace('.', '/') / (ObjectName + ".scala")
IO.write(out, keywordsSrc)
out
}
def keywordsSettings: Seq[Setting[_]] = inConfig(Compile)(Seq(
scalaKeywords := getScalaKeywords,
2016-11-09 15:06:48 +01:00
generateKeywords := writeScalaKeywords(sourceManaged.value, scalaKeywords.value),
sourceGenerators += (generateKeywords map (x => Seq(x))).taskValue
2015-08-20 06:18:02 +02:00
))
}