mirror of https://github.com/sbt/sbt.git
Dealias baseDirectory in AppConfiguration
In Load.scala and Defaults.scala, the AppConfiguration.baseDirectory is dealiased when it is a symlink. This commit dealiases the AppConfiguration.baseDirectory if it is a symlink so that sbt `appConfiguration.value.baseDirectory` should be the same as `baseDirectory.value`.
This commit is contained in:
parent
95221ed837
commit
3c51f01872
|
|
@ -33,6 +33,7 @@ import xsbti.compile.CompilerCache
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import scala.concurrent.ExecutionContext
|
import scala.concurrent.ExecutionContext
|
||||||
import scala.util.control.NonFatal
|
import scala.util.control.NonFatal
|
||||||
|
import xsbti.AppProvider
|
||||||
|
|
||||||
/** This class is the entry point for sbt. */
|
/** This class is the entry point for sbt. */
|
||||||
final class xMain extends xsbti.AppMain {
|
final class xMain extends xsbti.AppMain {
|
||||||
|
|
@ -40,6 +41,16 @@ final class xMain extends xsbti.AppMain {
|
||||||
new XMainConfiguration().run("xMain", configuration)
|
new XMainConfiguration().run("xMain", configuration)
|
||||||
}
|
}
|
||||||
private[sbt] object xMain {
|
private[sbt] object xMain {
|
||||||
|
private[sbt] def dealiasBaseDirectory(config: xsbti.AppConfiguration): xsbti.AppConfiguration = {
|
||||||
|
val dealiasedBase = config.baseDirectory.getCanonicalFile
|
||||||
|
if (config.baseDirectory == dealiasedBase) config
|
||||||
|
else
|
||||||
|
new xsbti.AppConfiguration {
|
||||||
|
override def arguments: Array[String] = config.arguments()
|
||||||
|
override val baseDirectory: File = dealiasedBase
|
||||||
|
override def provider: AppProvider = config.provider()
|
||||||
|
}
|
||||||
|
}
|
||||||
private[sbt] def run(configuration: xsbti.AppConfiguration): xsbti.MainResult =
|
private[sbt] def run(configuration: xsbti.AppConfiguration): xsbti.MainResult =
|
||||||
try {
|
try {
|
||||||
import BasicCommandStrings.{ DashClient, DashDashClient, runEarly }
|
import BasicCommandStrings.{ DashClient, DashDashClient, runEarly }
|
||||||
|
|
@ -54,16 +65,16 @@ private[sbt] object xMain {
|
||||||
val isClient: String => Boolean = cmd => (cmd == DashClient) || (cmd == DashDashClient)
|
val isClient: String => Boolean = cmd => (cmd == DashClient) || (cmd == DashDashClient)
|
||||||
val isBsp: String => Boolean = cmd => (cmd == "-bsp") || (cmd == "--bsp")
|
val isBsp: String => Boolean = cmd => (cmd == "-bsp") || (cmd == "--bsp")
|
||||||
if (userCommands.exists(isBsp)) {
|
if (userCommands.exists(isBsp)) {
|
||||||
BspClient.run(configuration)
|
BspClient.run(dealiasBaseDirectory(configuration))
|
||||||
} else {
|
} else {
|
||||||
Terminal.withStreams {
|
Terminal.withStreams {
|
||||||
if (clientModByEnv || userCommands.exists(isClient)) {
|
if (clientModByEnv || userCommands.exists(isClient)) {
|
||||||
val args = userCommands.toList.filterNot(isClient)
|
val args = userCommands.toList.filterNot(isClient)
|
||||||
NetworkClient.run(configuration, args)
|
NetworkClient.run(dealiasBaseDirectory(configuration), args)
|
||||||
Exit(0)
|
Exit(0)
|
||||||
} else {
|
} else {
|
||||||
val state = StandardMain.initialState(
|
val state = StandardMain.initialState(
|
||||||
configuration,
|
dealiasBaseDirectory(configuration),
|
||||||
Seq(defaults, early),
|
Seq(defaults, early),
|
||||||
runEarly(DefaultsCommand) :: runEarly(InitCommand) :: BootCommand :: Nil
|
runEarly(DefaultsCommand) :: runEarly(InitCommand) :: BootCommand :: Nil
|
||||||
)
|
)
|
||||||
|
|
@ -84,7 +95,7 @@ private[sbt] object ScriptMain {
|
||||||
private[sbt] def run(configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
private[sbt] def run(configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
||||||
import BasicCommandStrings.runEarly
|
import BasicCommandStrings.runEarly
|
||||||
val state = StandardMain.initialState(
|
val state = StandardMain.initialState(
|
||||||
configuration,
|
xMain.dealiasBaseDirectory(configuration),
|
||||||
BuiltinCommands.ScriptCommands,
|
BuiltinCommands.ScriptCommands,
|
||||||
runEarly(Level.Error.toString) :: Script.Name :: Nil
|
runEarly(Level.Error.toString) :: Script.Name :: Nil
|
||||||
)
|
)
|
||||||
|
|
@ -99,7 +110,7 @@ final class ConsoleMain extends xsbti.AppMain {
|
||||||
private[sbt] object ConsoleMain {
|
private[sbt] object ConsoleMain {
|
||||||
private[sbt] def run(configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
private[sbt] def run(configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
||||||
val state = StandardMain.initialState(
|
val state = StandardMain.initialState(
|
||||||
configuration,
|
xMain.dealiasBaseDirectory(configuration),
|
||||||
BuiltinCommands.ConsoleCommands,
|
BuiltinCommands.ConsoleCommands,
|
||||||
IvyConsole.Name :: Nil
|
IvyConsole.Name :: Nil
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue