Skip to content

Instantly share code, notes, and snippets.

@olafurpg
Created January 23, 2020 14:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save olafurpg/2c56f4f239c80f467552f7e65cfe4cc9 to your computer and use it in GitHub Desktop.
Save olafurpg/2c56f4f239c80f467552f7e65cfe4cc9 to your computer and use it in GitHub Desktop.
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