summaryrefslogtreecommitdiff
path: root/twirllib/src/mill/twirllib/TwirlModule.scala
diff options
context:
space:
mode:
authorGuillaume Grossetie <g.grossetie@gmail.com>2018-05-24 12:19:29 +0200
committerNikolay Tatarinov <5min4eq.unity@gmail.com>2018-05-24 13:19:29 +0300
commit02436b4000cc16683984244ca272b93c1ff015c7 (patch)
tree0fa431c28f31cc58fd513b5aa89c17fe4108607d /twirllib/src/mill/twirllib/TwirlModule.scala
parentab2a8b3b9eddbdc4212e6f0e2a4a0adea1f3caee (diff)
downloadmill-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.scala56
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)
+ }
+}