summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/OfflineCompilerCommand.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/OfflineCompilerCommand.scala')
-rw-r--r--src/compiler/scala/tools/nsc/OfflineCompilerCommand.scala30
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))
+ )
}