summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-03-02 10:30:12 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-03-02 17:30:40 -0800
commit1d7a0c142330d43adb5c221068d640dbcd6d8462 (patch)
treec726fbf56fde25b6971d3c2c6b6e7f0feb04a3b5
parente7e633bde72b704055b3d2351c4082aa892ed97a (diff)
downloadmill-1d7a0c142330d43adb5c221068d640dbcd6d8462.tar.gz
mill-1d7a0c142330d43adb5c221068d640dbcd6d8462.tar.bz2
mill-1d7a0c142330d43adb5c221068d640dbcd6d8462.zip
Allow people to substitute in their own implementation of ScalaModule#scalaWorker to configure resolvers/etc.
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSModule.scala3
-rw-r--r--scalalib/src/mill/scalalib/ScalaModule.scala11
-rw-r--r--scalalib/src/mill/scalalib/ScalaWorkerApi.scala8
3 files changed, 15 insertions, 7 deletions
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
index 6fc3e964..1d8fd3fc 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
+++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
@@ -15,6 +15,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
def scalaJSVersion: T[String]
trait Tests extends TestScalaJSModule {
+ override def scalaWorker = outer.scalaWorker
override def scalaVersion = outer.scalaVersion()
override def scalaJSVersion = outer.scalaJSVersion()
override def moduleDeps = Seq(outer)
@@ -193,7 +194,7 @@ trait TestScalaJSModule extends ScalaJSModule with TestModule {
fastOptTest().path.toIO
)
- val (doneMsg, results) = mill.scalalib.ScalaWorkerApi
+ val (doneMsg, results) = scalaWorker
.scalaWorker()
.runTests(
_ => Seq(framework),
diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala
index f92d4d49..bbfd4b27 100644
--- a/scalalib/src/mill/scalalib/ScalaModule.scala
+++ b/scalalib/src/mill/scalalib/ScalaModule.scala
@@ -20,17 +20,20 @@ trait ScalaModule extends mill.Module with TaskModule { outer =>
def defaultCommandName() = "run"
trait Tests extends TestModule{
def scalaVersion = outer.scalaVersion()
+ override def scalaWorker = outer.scalaWorker
override def moduleDeps = Seq(outer)
}
def scalaVersion: T[String]
def mainClass: T[Option[String]] = None
+ def scalaWorker: ScalaWorkerModule = mill.scalalib.ScalaWorkerModule
+
def finalMainClass: T[String] = T{
mainClass() match {
case Some(main) => Result.Success(main)
case None =>
- mill.scalalib.ScalaWorkerApi.scalaWorker().discoverMainClasses(compile()) match {
+ scalaWorker.scalaWorker().discoverMainClasses(compile()) match {
case Seq() => Result.Failure("No main class specified or found")
case Seq(main) => Result.Success(main)
case mains =>
@@ -138,7 +141,7 @@ trait ScalaModule extends mill.Module with TaskModule { outer =>
} yield PathRef(path)
}
def compile: T[CompilationResult] = T.persistent{
- mill.scalalib.ScalaWorkerApi.scalaWorker().compileScala(
+ scalaWorker.scalaWorker().compileScala(
scalaVersion(),
allSourceFiles().map(_.path),
scalaCompilerBridgeSources().map(_.path),
@@ -338,7 +341,7 @@ trait TestModule extends ScalaModule with TaskModule {
Jvm.subprocess(
mainClass = "mill.scalaworker.ScalaWorker",
- classPath = mill.scalalib.ScalaWorkerApi.scalaWorkerClasspath(),
+ classPath = scalaWorker.scalaWorkerClasspath(),
jvmArgs = forkArgs(),
envArgs = forkEnv(),
mainArgs = Seq(
@@ -360,7 +363,7 @@ trait TestModule extends ScalaModule with TaskModule {
def testLocal(args: String*) = T.command{
val outputPath = T.ctx().dest/"out.json"
- mill.scalalib.ScalaWorkerApi.scalaWorker().runTests(
+ scalaWorker.scalaWorker().runTests(
TestRunner.frameworks(testFrameworks()),
runClasspath().map(_.path),
Agg(compile().classes.path),
diff --git a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
index 7e11f61d..883cd30e 100644
--- a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
+++ b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
@@ -11,7 +11,11 @@ import mill.define.{Discover, Worker}
import mill.scalalib.Lib.resolveDependencies
import mill.util.Loose
import mill.util.JsonFormatters._
-object ScalaWorkerApi extends mill.define.ExternalModule {
+
+object ScalaWorkerModule extends mill.define.ExternalModule with ScalaWorkerModule{
+ lazy val millDiscover = Discover[this.type]
+}
+trait ScalaWorkerModule extends mill.Module{
def scalaWorkerClasspath = T{
val scalaWorkerJar = sys.props("MILL_SCALA_WORKER")
if (scalaWorkerJar != null) {
@@ -42,7 +46,7 @@ object ScalaWorkerApi extends mill.define.ExternalModule {
Seq(ivy"org.scala-sbt:compiler-interface:1.1.0")
)
}
- lazy val millDiscover = Discover[this.type]
+
}
trait ScalaWorkerApi {