diff options
author | Guillaume Grossetie <g.grossetie@gmail.com> | 2018-05-24 12:19:29 +0200 |
---|---|---|
committer | Nikolay Tatarinov <5min4eq.unity@gmail.com> | 2018-05-24 13:19:29 +0300 |
commit | 02436b4000cc16683984244ca272b93c1ff015c7 (patch) | |
tree | 0fa431c28f31cc58fd513b5aa89c17fe4108607d /twirllib/src/mill/twirllib/TwirlModule.scala | |
parent | ab2a8b3b9eddbdc4212e6f0e2a4a0adea1f3caee (diff) | |
download | mill-02436b4000cc16683984244ca272b93c1ff015c7.tar.gz mill-02436b4000cc16683984244ca272b93c1ff015c7.tar.bz2 mill-02436b4000cc16683984244ca272b93c1ff015c7.zip |
Add a TwirlModule to compile Twirl templates (#271)
* initial implementation
* Upgrade to the latest version
* Add tests
* Update the code to comply with the new API
* Use reflection to call TwirlCompiler.compile function
* Run twirllib.test on CI
* Use the Java API as a workaround
* wip
* Cleanup the code (code review)
* Add an example to call the Scala API
* twirl that works with scala API
* Create functions to override the default settings (will be available in the future)
Diffstat (limited to 'twirllib/src/mill/twirllib/TwirlModule.scala')
-rw-r--r-- | twirllib/src/mill/twirllib/TwirlModule.scala | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/twirllib/src/mill/twirllib/TwirlModule.scala b/twirllib/src/mill/twirllib/TwirlModule.scala new file mode 100644 index 00000000..2df70a1f --- /dev/null +++ b/twirllib/src/mill/twirllib/TwirlModule.scala @@ -0,0 +1,56 @@ +package mill +package twirllib + +import coursier.{Cache, MavenRepository} +import mill.define.Sources +import mill.eval.PathRef +import mill.scalalib.Lib.resolveDependencies +import mill.scalalib._ +import mill.util.Loose + +import scala.io.Codec +import scala.util.Properties + +trait TwirlModule extends mill.Module { + + def twirlVersion: T[String] + + def twirlSources: Sources = T.sources { + millSourcePath / 'views + } + + def twirlClasspath: T[Loose.Agg[PathRef]] = T { + resolveDependencies( + Seq( + Cache.ivy2Local, + MavenRepository("https://repo1.maven.org/maven2") + ), + Lib.depToDependency(_, "2.12.4"), + Seq( + ivy"com.typesafe.play::twirl-compiler:${twirlVersion()}", + ivy"org.scala-lang.modules::scala-parser-combinators:1.1.0" + ) + ) + } + + // REMIND currently it's not possible to override these default settings + private def twirlAdditionalImports: Seq[String] = Nil + + private def twirlConstructorAnnotations: Seq[String] = Nil + + private def twirlCodec: Codec = Codec(Properties.sourceEncoding) + + private def twirlInclusiveDot: Boolean = false + + def compileTwirl: T[CompilationResult] = T.persistent { + TwirlWorkerApi.twirlWorker + .compile( + twirlClasspath().map(_.path), + twirlSources().map(_.path), + T.ctx().dest, + twirlAdditionalImports, + twirlConstructorAnnotations, + twirlCodec, + twirlInclusiveDot) + } +} |