Skip to content

Commit 45ef3c4

Browse files
committed
Create functions to override the default settings (will be available in the future)
1 parent 95b9fe7 commit 45ef3c4

File tree

3 files changed

+43
-18
lines changed

3 files changed

+43
-18
lines changed

twirllib/src/mill/twirllib/TwirlModule.scala

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import mill.scalalib.Lib.resolveDependencies
88
import mill.scalalib._
99
import mill.util.Loose
1010

11+
import scala.io.Codec
12+
import scala.util.Properties
13+
1114
trait TwirlModule extends mill.Module {
1215

1316
def twirlVersion: T[String]
@@ -25,16 +28,29 @@ trait TwirlModule extends mill.Module {
2528
Lib.depToDependency(_, "2.12.4"),
2629
Seq(
2730
ivy"com.typesafe.play::twirl-compiler:${twirlVersion()}",
28-
ivy"org.scala-lang.modules::scala-parser-combinators:1.0.5"
31+
ivy"org.scala-lang.modules::scala-parser-combinators:1.1.0"
2932
)
3033
)
3134
}
3235

36+
// REMIND currently it's not possible to override these default settings
37+
private def twirlAdditionalImports: Seq[String] = Nil
38+
39+
private def twirlConstructorAnnotations: Seq[String] = Nil
40+
41+
private def twirlCodec: Codec = Codec(Properties.sourceEncoding)
42+
43+
private def twirlInclusiveDot: Boolean = false
44+
3345
def compileTwirl: T[CompilationResult] = T.persistent {
3446
TwirlWorkerApi.twirlWorker
3547
.compile(
3648
twirlClasspath().map(_.path),
3749
twirlSources().map(_.path),
38-
T.ctx().dest)
50+
T.ctx().dest,
51+
twirlAdditionalImports,
52+
twirlConstructorAnnotations,
53+
twirlCodec,
54+
twirlInclusiveDot)
3955
}
4056
}

twirllib/src/mill/twirllib/TwirlWorker.scala

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ package mill
22
package twirllib
33

44
import java.io.File
5+
import java.lang.reflect.Method
56
import java.net.URLClassLoader
67

78
import ammonite.ops.{Path, ls}
89
import mill.eval.PathRef
910
import mill.scalalib.CompilationResult
1011

1112
import scala.io.Codec
12-
import scala.util.Properties
1313

1414
class TwirlWorker {
1515

@@ -42,26 +42,32 @@ class TwirlWorker {
4242
sourceDirectory: File,
4343
generatedDirectory: File,
4444
formatterType: String,
45-
additionalImports: Seq[String] = Nil,
46-
constructorAnnotations: Seq[String] = Nil,
47-
codec: Codec = Codec(Properties.sourceEncoding),
48-
inclusiveDot: Boolean = false) {
45+
additionalImports: Seq[String],
46+
constructorAnnotations: Seq[String],
47+
codec: Codec,
48+
inclusiveDot: Boolean) {
4949
val o = compileMethod.invoke(null, source,
5050
sourceDirectory,
5151
generatedDirectory,
5252
formatterType,
53-
defaultAdditionalImportsMethod.invoke(additionalImports),
54-
defaultConstructorAnnotationsMethod.invoke(constructorAnnotations),
55-
defaultCodecMethod.invoke(codec),
56-
defaultFlagMethod.invoke(inclusiveDot))
53+
defaultAdditionalImportsMethod.invoke(null),
54+
defaultConstructorAnnotationsMethod.invoke(null),
55+
defaultCodecMethod.invoke(null),
56+
defaultFlagMethod.invoke(null))
5757
}
5858
}
5959
twirlInstanceCache = Some((classloaderSig, instance))
6060
instance
6161
}
6262
}
6363

64-
def compile(twirlClasspath: Agg[Path], sourceDirectories: Seq[Path], dest: Path)
64+
def compile(twirlClasspath: Agg[Path],
65+
sourceDirectories: Seq[Path],
66+
dest: Path,
67+
additionalImports: Seq[String],
68+
constructorAnnotations: Seq[String],
69+
codec: Codec,
70+
inclusiveDot: Boolean)
6571
(implicit ctx: mill.util.Ctx): mill.eval.Result[CompilationResult] = {
6672
val compiler = twirl(twirlClasspath)
6773

@@ -72,7 +78,11 @@ class TwirlWorker {
7278
compiler.compileTwirl(template.toIO,
7379
inputDir.toIO,
7480
dest.toIO,
75-
s"play.twirl.api.$extFormat"
81+
s"play.twirl.api.$extFormat",
82+
additionalImports,
83+
constructorAnnotations,
84+
codec,
85+
inclusiveDot
7686
)
7787
}
7888
}
@@ -97,10 +107,10 @@ trait TwirlWorkerApi {
97107
sourceDirectory: File,
98108
generatedDirectory: File,
99109
formatterType: String,
100-
additionalImports: Seq[String] = Nil,
101-
constructorAnnotations: Seq[String] = Nil,
102-
codec: Codec = Codec(Properties.sourceEncoding),
103-
inclusiveDot: Boolean = false)
110+
additionalImports: Seq[String],
111+
constructorAnnotations: Seq[String],
112+
codec: Codec,
113+
inclusiveDot: Boolean)
104114
}
105115

106116
object TwirlWorkerApi {

twirllib/test/src/mill/twirllib/HelloWorldTests.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ object HelloWorldTests extends TestSuite {
2020
object core extends HelloWorldModule {
2121
override def twirlVersion = "1.3.15"
2222
}
23-
2423
}
2524

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

0 commit comments

Comments
 (0)