summaryrefslogtreecommitdiff
path: root/scalatex/scalatexSbtPlugin/src/main/scala/SbtPlugin.scala
diff options
context:
space:
mode:
Diffstat (limited to 'scalatex/scalatexSbtPlugin/src/main/scala/SbtPlugin.scala')
-rw-r--r--scalatex/scalatexSbtPlugin/src/main/scala/SbtPlugin.scala50
1 files changed, 43 insertions, 7 deletions
diff --git a/scalatex/scalatexSbtPlugin/src/main/scala/SbtPlugin.scala b/scalatex/scalatexSbtPlugin/src/main/scala/SbtPlugin.scala
index f09dc17..df163f0 100644
--- a/scalatex/scalatexSbtPlugin/src/main/scala/SbtPlugin.scala
+++ b/scalatex/scalatexSbtPlugin/src/main/scala/SbtPlugin.scala
@@ -1,16 +1,52 @@
package scalatex
+import java.nio.file.Paths
+
import sbt.Keys._
import sbt._
object SbtPlugin extends sbt.Plugin{
val scalatexDirectory = taskKey[sbt.File]("Clone stuff from github")
- override val settings = Seq(
+ val mySeq = Seq(
scalatexDirectory := sourceDirectory.value / "scalatex",
- scalacOptions += {
- "-P:scalatex:root:" + scalatexDirectory.value.getCanonicalPath
- },
- watchSources += scalatexDirectory.value,
- addCompilerPlugin("com.lihaoyi" %% "scalatex-compiler-plugin" % "0.1.0"),
- libraryDependencies += "com.lihaoyi" %% "scalatex-api" % "0.1.0"
+ managedSources ++= {
+ val inputDir = scalatexDirectory.value
+ val outputDir = sourceManaged.value / "scalatex"
+ val inputFiles = (inputDir ** "*.scalatex").get
+ println("Generating Scalatex Sources...")
+ val outputFiles = for(inFile <- inputFiles) yield {
+ val outFile = new sbt.File(
+ outputDir.getAbsolutePath + inFile.getAbsolutePath.drop(inputDir.getAbsolutePath.length)
+ )
+ val name = inFile.getName
+ val objectName = name.slice(name.lastIndexOf('/')+1, name.lastIndexOf('.'))
+ val pkgName =
+ inFile.getAbsolutePath
+ .drop(inputDir.getAbsolutePath.length + 1)
+ .toString
+ .split("/")
+ .dropRight(1)
+ .map(s => s"package $s")
+ .mkString("\n")
+ IO.write(
+ outFile,
+ s"""
+ |$pkgName
+ |import scalatags.Text.all._
+ |
+ |object $objectName{
+ | def apply() = scalatex.twf("${inFile.getAbsolutePath}")
+ |}
+ |
+ |${IO.readLines(inFile).map("//"+_).mkString("\n")}
+ """.stripMargin
+ )
+ outFile
+ }
+ outputFiles
+ }
+ )
+ val scalatexSettings = inConfig(Test)(mySeq) ++ inConfig(Compile)(mySeq) ++ Seq(
+ libraryDependencies += "com.lihaoyi" %% "scalatex-api" % "0.1.0",
+ watchSources ++= ((scalatexDirectory in Compile).value ** "*.scalatex").get
)
}