mirror of
https://github.com/sbt/sbt.git
synced 2026-09-02 22:58:34 +02:00
Use -Dsbt.script to start sbt server
In order to start the sbt server we must use the sbt script because it is the only way to load the .sbtopts and the .jvmopts file properly. To do so the sbt script can pass a -Dsbt.script prop to the java server. It is used in the NetworkClient to start the server, and it is replicated in the BuildServerConnection file (.bsp/sbt.json).
This commit is contained in:
@@ -1045,7 +1045,8 @@ object NetworkClient {
|
||||
private[client] val noStdErr = "--no-stderr"
|
||||
private[client] val sbtBase = "--sbt-base-directory"
|
||||
private[client] def parseArgs(args: Array[String]): Arguments = {
|
||||
var sbtScript = if (Properties.isWin) "sbt.bat" else "sbt"
|
||||
val defaultSbtScript = if (Properties.isWin) "sbt.bat" else "sbt"
|
||||
var sbtScript = Properties.propOrNone("sbt.script")
|
||||
var launchJar: Option[String] = None
|
||||
var bsp = false
|
||||
val commandArgs = new mutable.ArrayBuffer[String]
|
||||
@@ -1067,11 +1068,10 @@ object NetworkClient {
|
||||
sbtScript = a
|
||||
.split("--sbt-script=")
|
||||
.lastOption
|
||||
.map(_.replaceAllLiterally("%20", " "))
|
||||
.getOrElse(sbtScript)
|
||||
.orElse(sbtScript)
|
||||
case "--sbt-script" if i + 1 < sanitized.length =>
|
||||
i += 1
|
||||
sbtScript = sanitized(i).replaceAllLiterally("%20", " ")
|
||||
sbtScript = Some(sanitized(i))
|
||||
case a if a.startsWith("--sbt-launch-jar=") =>
|
||||
launchJar = a
|
||||
.split("--sbt-launch-jar=")
|
||||
@@ -1091,12 +1091,17 @@ object NetworkClient {
|
||||
}
|
||||
val base = new File("").getCanonicalFile
|
||||
if (!sbtArguments.contains("-Dsbt.io.virtual=true")) sbtArguments += "-Dsbt.io.virtual=true"
|
||||
if (!sbtArguments.exists(_.startsWith("-Dsbt.script"))) {
|
||||
sbtScript.foreach { sbtScript =>
|
||||
sbtArguments += s"-Dsbt.script=$sbtScript"
|
||||
}
|
||||
}
|
||||
new Arguments(
|
||||
base,
|
||||
sbtArguments.toSeq,
|
||||
commandArgs.toSeq,
|
||||
completionArguments.toSeq,
|
||||
sbtScript,
|
||||
sbtScript.getOrElse(defaultSbtScript).replaceAllLiterally("%20", " "),
|
||||
bsp,
|
||||
launchJar
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user