diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-01-12 21:27:41 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-01-12 21:27:41 -0800 |
commit | cde65b142ca4c356134350525775d631015799ee (patch) | |
tree | cb679755c916e4fad137b684bb86c74dee4ac716 | |
parent | 9cc010127b0b631c838db666200f293d0cf9ac37 (diff) | |
download | mill-cde65b142ca4c356134350525775d631015799ee.tar.gz mill-cde65b142ca4c356134350525775d631015799ee.tar.bz2 mill-cde65b142ca4c356134350525775d631015799ee.zip |
Allow `Cross`-builds to themselves be `Module`s so you can nest stuff inside
Also properly propagate `mainClass` into `assembly`
-rw-r--r-- | core/src/main/scala/mill/define/Cross.scala | 9 | ||||
-rw-r--r-- | scalalib/src/main/scala/mill/scalalib/Module.scala | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/core/src/main/scala/mill/define/Cross.scala b/core/src/main/scala/mill/define/Cross.scala index e7d0d843..8e27c714 100644 --- a/core/src/main/scala/mill/define/Cross.scala +++ b/core/src/main/scala/mill/define/Cross.scala @@ -43,8 +43,8 @@ object Cross{ * } */ class Cross[T](cases: Any*) - (implicit ci: Cross.Factory[T], - val ctx: Module.Ctx){ + (implicit ci: Cross.Factory[T], + ctx: Module.Ctx) extends mill.define.Module()(ctx) { val items = for(c0 <- cases.toList) yield{ val c = c0 match{ @@ -52,10 +52,15 @@ class Cross[T](cases: Any*) case v => Tuple1(v) } val crossValues = c.productIterator.toList.reverse + val relPath = ctx.segment match{ + case Segment.Label(s) => ammonite.ops.empty / s + case Segment.Cross(vs) => ammonite.ops.empty / vs.map(_.toString) + } val sub = ci.make( c, ctx.copy( segments0 = ctx.segments0 ++ Seq(ctx.segment), + basePath = ctx.basePath / relPath, segment = Segment.Cross(crossValues) ) ) diff --git a/scalalib/src/main/scala/mill/scalalib/Module.scala b/scalalib/src/main/scala/mill/scalalib/Module.scala index a6819435..d3120721 100644 --- a/scalalib/src/main/scala/mill/scalalib/Module.scala +++ b/scalalib/src/main/scala/mill/scalalib/Module.scala @@ -218,6 +218,7 @@ trait Module extends mill.Module with TaskModule { outer => def assembly = T{ createAssembly( runClasspath().map(_.path).filter(exists), + mainClass(), prependShellScript = prependShellScript() ) } @@ -376,6 +377,7 @@ trait SbtModule extends Module { outer => } trait CrossSbtModule extends SbtModule { outer => + override def basePath = super.basePath / ammonite.ops.up implicit def crossSbtModuleResolver: Resolver[CrossSbtModule] = new Resolver[CrossSbtModule]{ def resolve[V <: CrossSbtModule](c: Cross[V]): V = { crossScalaVersion.split('.') |