diff options
Diffstat (limited to 'stage2/Stage2.scala')
-rw-r--r-- | stage2/Stage2.scala | 19 |
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") |