mirror of https://github.com/sbt/sbt.git
Merge pull request #4988 from eatkins/fix-script-main-settings
Fix settings in ScriptMain
This commit is contained in:
commit
c22e318712
|
|
@ -36,9 +36,9 @@ import scala.util.control.NonFatal
|
||||||
/** 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 {
|
||||||
def run(configuration: xsbti.AppConfiguration): xsbti.MainResult =
|
def run(configuration: xsbti.AppConfiguration): xsbti.MainResult =
|
||||||
new XMainConfiguration().runXMain(configuration)
|
new XMainConfiguration().run("xMain", configuration)
|
||||||
}
|
}
|
||||||
private[sbt] object xMainImpl {
|
private[sbt] object xMain {
|
||||||
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 }
|
||||||
|
|
@ -72,7 +72,11 @@ private[sbt] object xMainImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
final class ScriptMain extends xsbti.AppMain {
|
final class ScriptMain extends xsbti.AppMain {
|
||||||
def run(configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
def run(configuration: xsbti.AppConfiguration): xsbti.MainResult =
|
||||||
|
new XMainConfiguration().run("ScriptMain", configuration)
|
||||||
|
}
|
||||||
|
private[sbt] object ScriptMain {
|
||||||
|
private[sbt] def run(configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
||||||
import BasicCommandStrings.runEarly
|
import BasicCommandStrings.runEarly
|
||||||
val state = StandardMain.initialState(
|
val state = StandardMain.initialState(
|
||||||
configuration,
|
configuration,
|
||||||
|
|
@ -84,7 +88,11 @@ final class ScriptMain extends xsbti.AppMain {
|
||||||
}
|
}
|
||||||
|
|
||||||
final class ConsoleMain extends xsbti.AppMain {
|
final class ConsoleMain extends xsbti.AppMain {
|
||||||
def run(configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
def run(configuration: xsbti.AppConfiguration): xsbti.MainResult =
|
||||||
|
new XMainConfiguration().run("ConsoleMain", configuration)
|
||||||
|
}
|
||||||
|
private[sbt] object ConsoleMain {
|
||||||
|
private[sbt] def run(configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
||||||
val state = StandardMain.initialState(
|
val state = StandardMain.initialState(
|
||||||
configuration,
|
configuration,
|
||||||
BuiltinCommands.ConsoleCommands,
|
BuiltinCommands.ConsoleCommands,
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ private[sbt] class XMainConfiguration {
|
||||||
case a: AutoCloseable => a.close()
|
case a: AutoCloseable => a.close()
|
||||||
case _ =>
|
case _ =>
|
||||||
}
|
}
|
||||||
def runXMain(configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
def run(moduleName: String, configuration: xsbti.AppConfiguration): xsbti.MainResult = {
|
||||||
val updatedConfiguration =
|
val updatedConfiguration =
|
||||||
if (configuration.provider.scalaProvider.launcher.topLoader.getClass.getCanonicalName
|
if (configuration.provider.scalaProvider.launcher.topLoader.getClass.getCanonicalName
|
||||||
.contains("TestInterfaceLoader")) {
|
.contains("TestInterfaceLoader")) {
|
||||||
|
|
@ -38,7 +38,7 @@ private[sbt] class XMainConfiguration {
|
||||||
}
|
}
|
||||||
val loader = updatedConfiguration.provider.loader
|
val loader = updatedConfiguration.provider.loader
|
||||||
Thread.currentThread.setContextClassLoader(loader)
|
Thread.currentThread.setContextClassLoader(loader)
|
||||||
val clazz = loader.loadClass("sbt.xMainImpl$")
|
val clazz = loader.loadClass(s"sbt.$moduleName$$")
|
||||||
val instance = clazz.getField("MODULE$").get(null)
|
val instance = clazz.getField("MODULE$").get(null)
|
||||||
val runMethod = clazz.getMethod("run", classOf[xsbti.AppConfiguration])
|
val runMethod = clazz.getMethod("run", classOf[xsbti.AppConfiguration])
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ object RunFromSourceMain {
|
||||||
}
|
}
|
||||||
|
|
||||||
@tailrec private def launch(conf: AppConfiguration): Option[Int] =
|
@tailrec private def launch(conf: AppConfiguration): Option[Int] =
|
||||||
xMainImpl.run(conf) match {
|
xMain.run(conf) match {
|
||||||
case e: xsbti.Exit => Some(e.code)
|
case e: xsbti.Exit => Some(e.code)
|
||||||
case _: xsbti.Continue => None
|
case _: xsbti.Continue => None
|
||||||
case r: xsbti.Reboot => launch(getConf(conf.baseDirectory(), r.arguments()))
|
case r: xsbti.Reboot => launch(getConf(conf.baseDirectory(), r.arguments()))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue