aboutsummaryrefslogtreecommitdiff
path: root/stage2/Stage2.scala
diff options
context:
space:
mode:
Diffstat (limited to 'stage2/Stage2.scala')
-rw-r--r--stage2/Stage2.scala19
1 files changed, 16 insertions, 3 deletions
diff --git a/stage2/Stage2.scala b/stage2/Stage2.scala
index ddadfb6..fa41d79 100644
--- a/stage2/Stage2.scala
+++ b/stage2/Stage2.scala
@@ -15,8 +15,9 @@ object Stage2 extends Stage2Base{
logger.stage2(s"Stage2 start")
val loop = args.args.lift(0) == Some("loop")
val direct = args.args.lift(0) == Some("direct")
+ val cross = args.args.lift(0) == Some("cross")
- val taskIndex = if (loop || direct) {
+ val taskIndex = if (loop || direct || cross) {
1
} else {
0
@@ -27,6 +28,18 @@ object Stage2 extends Stage2Base{
val first = lib.loadRoot( context )
val build = first.finalBuild
+ def call(build: Build) = {
+ if(cross){
+ build.crossScalaVersions.foreach{
+ v => new lib.ReflectBuild(
+ build.copy(context.copy(scalaVersion = Some(v)))
+ ).callNullary(task)
+ }
+ } else {
+ new lib.ReflectBuild(build).callNullary(task)
+ }
+ }
+
val res =
if (loop) {
// TODO: this should allow looping over task specific files, like test files as well
@@ -45,10 +58,10 @@ object Stage2 extends Stage2Base{
case file if triggerFiles.exists(file.toString startsWith _.toString) =>
val build = lib.loadDynamic(context)
logger.loop(s"Re-running $task for " ++ build.projectDirectory.toString)
- new lib.ReflectBuild(build).callNullary(task)
+ call(build)
}
} else {
- new lib.ReflectBuild(build).callNullary(task)
+ call(build)
}
logger.stage2(s"Stage2 end")