diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-12-28 09:09:39 +0100 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-12-28 09:09:39 +0100 |
commit | a84c09efcb2d843ee04ee3299ceb592a00a42267 (patch) | |
tree | f0fd2cf8cadd7bc4bf91ebd31bd41d34a170a7f3 /scalatex/scalatexSbtPlugin | |
parent | 7d14b23dbbdaf66b222839874a29fff4a34e1762 (diff) | |
download | hands-on-scala-js-a84c09efcb2d843ee04ee3299ceb592a00a42267.tar.gz hands-on-scala-js-a84c09efcb2d843ee04ee3299ceb592a00a42267.tar.bz2 hands-on-scala-js-a84c09efcb2d843ee04ee3299ceb592a00a42267.zip |
wip
Diffstat (limited to 'scalatex/scalatexSbtPlugin')
-rw-r--r-- | scalatex/scalatexSbtPlugin/src/main/scala/SbtPlugin.scala | 50 |
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 ) } |