Created
January 23, 2020 14:47
-
-
Save olafurpg/2c56f4f239c80f467552f7e65cfe4cc9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/frontend/src/main/scala/bloop/data/Project.scala b/frontend/src/main/scala/bloop/data/Project.scala | |
index 3bf914d..7ae05fc 100644 | |
--- a/frontend/src/main/scala/bloop/data/Project.scala | |
+++ b/frontend/src/main/scala/bloop/data/Project.scala | |
@@ -5,6 +5,7 @@ import bloop.logging.{DebugFilter, Logger} | |
import bloop.ScalaInstance | |
import bloop.bsp.ProjectUris | |
import bloop.config.Config | |
+import bloop.data.Platform | |
import bloop.engine.Dag | |
import bloop.engine.caches.SemanticDBCache | |
import bloop.engine.tasks.toolchains.{JvmToolchain, ScalaJsToolchain, ScalaNativeToolchain} | |
@@ -62,6 +63,19 @@ final case class Project( | |
case Config.ScalaThenJava => CompileOrder.ScalaThenJava | |
} | |
+ def workingDirectory: AbsolutePath = { | |
+ val customWorkingDirectory = platform match { | |
+ case Platform.Jvm(config, toolchain, userMainClass) => | |
+ config.javaOptions.collectFirst { | |
+ case option if option.startsWith("-Duser.dir=") => | |
+ AbsolutePath(option.stripPrefix("-Duser.dir=")) | |
+ } | |
+ case _ => | |
+ None | |
+ } | |
+ customWorkingDirectory.getOrElse(baseDirectory) | |
+ } | |
+ | |
val uniqueId = s"${origin.path.syntax}#${name}" | |
override def toString: String = s"$name" | |
override val hashCode: Int = | |
diff --git a/frontend/src/main/scala/bloop/engine/Interpreter.scala b/frontend/src/main/scala/bloop/engine/Interpreter.scala | |
index 13aef81..a463ea4 100644 | |
--- a/frontend/src/main/scala/bloop/engine/Interpreter.scala | |
+++ b/frontend/src/main/scala/bloop/engine/Interpreter.scala | |
@@ -551,7 +551,7 @@ object Interpreter { | |
private def run(cmd: Commands.Run, state: State): Task[State] = { | |
def doRun(project: Project)(state: State): Task[State] = { | |
- val cwd = project.baseDirectory | |
+ val cwd = project.workingDirectory | |
compileAnd(cmd, state, List(project), false, cmd.cliOptions.noColor, "`run`") { state => | |
getMainClass(state, project, cmd.main) match { | |
case Left(failedState) => Task.now(failedState) | |
diff --git a/frontend/src/main/scala/bloop/engine/tasks/Tasks.scala b/frontend/src/main/scala/bloop/engine/tasks/Tasks.scala | |
index 91f4ec3..7700c5d 100644 | |
--- a/frontend/src/main/scala/bloop/engine/tasks/Tasks.scala | |
+++ b/frontend/src/main/scala/bloop/engine/tasks/Tasks.scala | |
@@ -113,7 +113,7 @@ object Tasks { | |
} | |
} | |
- val cwd = project.baseDirectory | |
+ val cwd = project.workingDirectory | |
TestTask.runTestSuites( | |
state, | |
project, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment