aboutsummaryrefslogtreecommitdiff
path: root/stage2/BasicBuild.scala
diff options
context:
space:
mode:
Diffstat (limited to 'stage2/BasicBuild.scala')
-rw-r--r--stage2/BasicBuild.scala28
1 files changed, 28 insertions, 0 deletions
diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala
index 0bdbad7..e41545b 100644
--- a/stage2/BasicBuild.scala
+++ b/stage2/BasicBuild.scala
@@ -319,4 +319,32 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with SbtDep
final def crossScalaVersionsArray = Array(scalaVersion)
def publish: Seq[URL] = Seq()
+
+ def fork = false
+
+ def runForked: ExitCode = {
+ val ( pid, waitFor, destroy ) = runForkedHandles
+ waitFor()
+ }
+
+ protected def runForkedHandles = runForked( mainClassOrFail.getName, context.args )
+
+ def runForked( className: String, args: Seq[String] ): ( Int, () => ExitCode, () => ExitCode ) =
+ lib.runMainForked(
+ className,
+ args,
+ classpath.string,
+ Some( context.workingDirectory ),
+ NailgunLauncher.runningViaNailgun.option(
+ lib.getOutErrIn match { case (l,r, in) => (l.get,r.get, in) }
+ )
+ )
+
+ override def runMain( className: String, args: Seq[String] ): ExitCode = {
+ if(fork){
+ runForked(className, args)._2()
+ } else {
+ super.runMain( className, args )
+ }
+ }
}