summaryrefslogtreecommitdiff
path: root/contrib/twirllib/src/TwirlModule.scala
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/twirllib/src/TwirlModule.scala')
-rw-r--r--contrib/twirllib/src/TwirlModule.scala55
1 files changed, 55 insertions, 0 deletions
diff --git a/contrib/twirllib/src/TwirlModule.scala b/contrib/twirllib/src/TwirlModule.scala
new file mode 100644
index 00000000..328afc47
--- /dev/null
+++ b/contrib/twirllib/src/TwirlModule.scala
@@ -0,0 +1,55 @@
+package mill
+package twirllib
+
+import coursier.{Cache, MavenRepository}
+import mill.define.Sources
+import mill.api.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"
+ )
+ )
+ }
+
+ 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[mill.scalalib.api.CompilationResult] = T.persistent {
+ TwirlWorkerApi.twirlWorker
+ .compile(
+ twirlClasspath().map(_.path),
+ twirlSources().map(_.path),
+ T.ctx().dest,
+ twirlAdditionalImports,
+ twirlConstructorAnnotations,
+ twirlCodec,
+ twirlInclusiveDot)
+ }
+}