Skip to content

Commit

Permalink
Create functions to override the default settings (will be available …
Browse files Browse the repository at this point in the history
…in the future)
  • Loading branch information
ggrossetie committed May 23, 2018
1 parent 95b9fe7 commit 45ef3c4
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 18 deletions.
20 changes: 18 additions & 2 deletions twirllib/src/mill/twirllib/TwirlModule.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ 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]
Expand All @@ -25,16 +28,29 @@ trait TwirlModule extends mill.Module {
Lib.depToDependency(_, "2.12.4"),
Seq(
ivy"com.typesafe.play::twirl-compiler:${twirlVersion()}",
ivy"org.scala-lang.modules::scala-parser-combinators:1.0.5"
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)
T.ctx().dest,
twirlAdditionalImports,
twirlConstructorAnnotations,
twirlCodec,
twirlInclusiveDot)
}
}
40 changes: 25 additions & 15 deletions twirllib/src/mill/twirllib/TwirlWorker.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package mill
package twirllib

import java.io.File
import java.lang.reflect.Method
import java.net.URLClassLoader

import ammonite.ops.{Path, ls}
import mill.eval.PathRef
import mill.scalalib.CompilationResult

import scala.io.Codec
import scala.util.Properties

class TwirlWorker {

Expand Down Expand Up @@ -42,26 +42,32 @@ class TwirlWorker {
sourceDirectory: File,
generatedDirectory: File,
formatterType: String,
additionalImports: Seq[String] = Nil,
constructorAnnotations: Seq[String] = Nil,
codec: Codec = Codec(Properties.sourceEncoding),
inclusiveDot: Boolean = false) {
additionalImports: Seq[String],
constructorAnnotations: Seq[String],
codec: Codec,
inclusiveDot: Boolean) {
val o = compileMethod.invoke(null, source,
sourceDirectory,
generatedDirectory,
formatterType,
defaultAdditionalImportsMethod.invoke(additionalImports),
defaultConstructorAnnotationsMethod.invoke(constructorAnnotations),
defaultCodecMethod.invoke(codec),
defaultFlagMethod.invoke(inclusiveDot))
defaultAdditionalImportsMethod.invoke(null),
defaultConstructorAnnotationsMethod.invoke(null),
defaultCodecMethod.invoke(null),
defaultFlagMethod.invoke(null))
}
}
twirlInstanceCache = Some((classloaderSig, instance))
instance
}
}

def compile(twirlClasspath: Agg[Path], sourceDirectories: Seq[Path], dest: Path)
def compile(twirlClasspath: Agg[Path],
sourceDirectories: Seq[Path],
dest: Path,
additionalImports: Seq[String],
constructorAnnotations: Seq[String],
codec: Codec,
inclusiveDot: Boolean)
(implicit ctx: mill.util.Ctx): mill.eval.Result[CompilationResult] = {
val compiler = twirl(twirlClasspath)

Expand All @@ -72,7 +78,11 @@ class TwirlWorker {
compiler.compileTwirl(template.toIO,
inputDir.toIO,
dest.toIO,
s"play.twirl.api.$extFormat"
s"play.twirl.api.$extFormat",
additionalImports,
constructorAnnotations,
codec,
inclusiveDot
)
}
}
Expand All @@ -97,10 +107,10 @@ trait TwirlWorkerApi {
sourceDirectory: File,
generatedDirectory: File,
formatterType: String,
additionalImports: Seq[String] = Nil,
constructorAnnotations: Seq[String] = Nil,
codec: Codec = Codec(Properties.sourceEncoding),
inclusiveDot: Boolean = false)
additionalImports: Seq[String],
constructorAnnotations: Seq[String],
codec: Codec,
inclusiveDot: Boolean)
}

object TwirlWorkerApi {
Expand Down
1 change: 0 additions & 1 deletion twirllib/test/src/mill/twirllib/HelloWorldTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ object HelloWorldTests extends TestSuite {
object core extends HelloWorldModule {
override def twirlVersion = "1.3.15"
}

}

val resourcePath: Path = pwd / 'twirllib / 'test / 'resources / "hello-world"
Expand Down

0 comments on commit 45ef3c4

Please sign in to comment.