diff options
author | ajrnz <richards.aj@gmail.com> | 2018-02-16 16:39:37 +0000 |
---|---|---|
committer | ajrnz <richards.aj@gmail.com> | 2018-02-16 17:24:16 +0000 |
commit | 4cae6ff8a1111bb6c4bc6a44e67bd0affdbb9792 (patch) | |
tree | 525db19eb2b03f32b35e1bdc6e4329837c338875 /scalalib/src | |
parent | 7f2b6e2d5015654954376639706543502a377844 (diff) | |
download | mill-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.scala | 14 | ||||
-rw-r--r-- | scalalib/src/mill/scalalib/ScalaWorkerApi.scala | 2 |
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] } |