From cde65b142ca4c356134350525775d631015799ee Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Fri, 12 Jan 2018 21:27:41 -0800 Subject: Allow `Cross`-builds to themselves be `Module`s so you can nest stuff inside Also properly propagate `mainClass` into `assembly` --- core/src/main/scala/mill/define/Cross.scala | 9 +++++++-- 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('.') -- cgit v1.2.3