diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/OfflineCompilerCommand.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/OfflineCompilerCommand.scala | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/OfflineCompilerCommand.scala b/src/compiler/scala/tools/nsc/OfflineCompilerCommand.scala index 786bcb1eb5..ef974da965 100644 --- a/src/compiler/scala/tools/nsc/OfflineCompilerCommand.scala +++ b/src/compiler/scala/tools/nsc/OfflineCompilerCommand.scala @@ -5,10 +5,38 @@ package scala.tools.nsc +import settings.FscSettings +import io.Directory + /** A compiler command for the offline compiler. * * @author Martin Odersky and Lex Spoon */ -class OfflineCompilerCommand(arguments: List[String], settings: Settings) extends CompilerCommand(arguments, settings) { +class OfflineCompilerCommand(arguments: List[String], settings: FscSettings) extends CompilerCommand(arguments, settings) { + import settings.currentDir + def extraFscArgs = List(currentDir.name, currentDir.value) + + locally { + // if -current-dir is unset, we're on the client and need to obtain it. + if (currentDir.isDefault) { + // Prefer env variable PWD to system property user.dir because the former + // deals better with paths not rooted at / (filesystem mounts.) + val baseDirectory = System.getenv("PWD") match { + case null => Directory.Current getOrElse Directory("/") + case dir => Directory(dir) + } + currentDir.value = baseDirectory.path + } + else { + // Otherwise we're on the server and will use it to absolutize the paths. + settings.absolutize(currentDir.value) + } + } + override def cmdName = "fsc" + override def usageMsg = ( + createUsageMsg("where possible fsc", false, x => x.isStandard && settings.isFscSpecific(x.name)) + + "\nStandard scalac options also available:\n " + + createUsageMsg(x => x.isStandard && !settings.isFscSpecific(x.name)) + ) } |