1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
package mill.scalalib
import coursier.Cache
import coursier.maven.MavenRepository
import mill.Agg
import mill.T
import mill.define.{Discover, Worker}
import mill.scalalib.Lib.resolveDependencies
import mill.util.Loose
import mill.util.JsonFormatters._
object ZincWorkerModule extends mill.define.ExternalModule with ZincWorkerModule{
lazy val millDiscover = Discover[this.type]
}
trait ZincWorkerModule extends mill.Module{
def repositories = Seq(
Cache.ivy2Local,
MavenRepository("https://repo1.maven.org/maven2"),
MavenRepository("https://oss.sonatype.org/content/repositories/releases")
)
def classpath = T{
mill.modules.Util.millProjectModule("MILL_SCALA_WORKER", "mill-scalalib-worker", repositories)
}
def scalalibClasspath = T{
mill.modules.Util.millProjectModule("MILL_SCALA_LIB", "mill-scalalib", repositories)
}
def backgroundWrapperClasspath = T{
mill.modules.Util.millProjectModule(
"MILL_BACKGROUNDWRAPPER", "mill-scalalib-backgroundwrapper",
repositories, artifactSuffix = ""
)
}
def worker: Worker[mill.scalalib.api.ZincWorkerApi] = T.worker{
val cl = mill.api.ClassLoader.create(
classpath().map(_.path.toNIO.toUri.toURL).toVector,
getClass.getClassLoader
)
val cls = cl.loadClass("mill.scalalib.worker.ZincWorkerImpl")
val instance = cls.getConstructor(classOf[mill.api.Ctx], classOf[Array[String]])
.newInstance(T.ctx(), compilerInterfaceClasspath().map(_.path.toString).toArray[String])
instance.asInstanceOf[mill.scalalib.api.ZincWorkerApi]
}
def compilerInterfaceClasspath = T{
resolveDependencies(
repositories,
Lib.depToDependency(_, "2.12.4", ""),
Seq(ivy"org.scala-sbt:compiler-interface:${Versions.zinc}")
)
}
}
|