summaryrefslogtreecommitdiff
path: root/scalalib/src
diff options
context:
space:
mode:
authorajrnz <richards.aj@gmail.com>2018-02-16 16:39:37 +0000
committerajrnz <richards.aj@gmail.com>2018-02-16 17:24:16 +0000
commit4cae6ff8a1111bb6c4bc6a44e67bd0affdbb9792 (patch)
tree525db19eb2b03f32b35e1bdc6e4329837c338875 /scalalib/src
parent7f2b6e2d5015654954376639706543502a377844 (diff)
downloadmill-4cae6ff8a1111bb6c4bc6a44e67bd0affdbb9792.tar.gz
mill-4cae6ff8a1111bb6c4bc6a44e67bd0affdbb9792.tar.bz2
mill-4cae6ff8a1111bb6c4bc6a44e67bd0affdbb9792.zip
Discover main class(es) via zinc
Diffstat (limited to 'scalalib/src')
-rw-r--r--scalalib/src/mill/scalalib/ScalaModule.scala14
-rw-r--r--scalalib/src/mill/scalalib/ScalaWorkerApi.scala2
2 files changed, 15 insertions, 1 deletions
diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala
index b7810246..f0b2ca86 100644
--- a/scalalib/src/mill/scalalib/ScalaModule.scala
+++ b/scalalib/src/mill/scalalib/ScalaModule.scala
@@ -23,7 +23,19 @@ trait ScalaModule extends mill.Module with TaskModule { outer =>
override def moduleDeps = Seq(outer)
}
def scalaVersion: T[String]
- def mainClass: T[Option[String]] = None
+
+ def mainClass: T[Option[String]] = T{
+ discoverMainClasses() match {
+ case Seq(main) => Some(main)
+ case _ => None
+ }
+ }
+
+ def discoverMainClasses: T[Seq[String]] = T{
+ Task.traverse(transitiveModuleDeps){ module => T.task {
+ mill.scalalib.ScalaWorkerApi.scalaWorker().discoverMainClasses(module.compile())
+ }}().flatten.distinct
+ }
def ivyDeps = T{ Agg.empty[Dep] }
def compileIvyDeps = T{ Agg.empty[Dep] }
diff --git a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
index 03cd7d9d..ec2489af 100644
--- a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
+++ b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala
@@ -62,4 +62,6 @@ trait ScalaWorkerApi {
testClassfilePath: Agg[Path],
args: Seq[String])
(implicit ctx: mill.util.Ctx.Log): (String, Seq[Result])
+
+ def discoverMainClasses(compilationResult: CompilationResult)(implicit ctx: mill.util.Ctx): Seq[String]
}