Skip to content

Commit 13df81f

Browse files
Don't call directories-jvm stuff if BLOOP_DAEMON_DIR is set (#34)
1 parent d33292e commit 13df81f

File tree

2 files changed

+43
-34
lines changed

2 files changed

+43
-34
lines changed

bloopgun-core/src/main/scala/bloop/bloopgun/Defaults.scala

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,30 @@ object Defaults {
2121
}
2222

2323
// also more or less in bloop.io.Paths…
24-
private val projectDirectories = ProjectDirectories.from("", "", "bloop")
25-
private final val bloopCacheDir: Path = Paths.get(projectDirectories.cacheDir)
26-
private final val bloopDataDir: Path = Paths.get(projectDirectories.dataDir)
24+
private lazy val projectDirectories = ProjectDirectories.from("", "", "bloop")
25+
private lazy val bloopCacheDir: Path = Paths.get(projectDirectories.cacheDir)
26+
private lazy val bloopDataDir: Path = Paths.get(projectDirectories.dataDir)
2727

28-
final val daemonDir: Path = {
29-
val baseDir =
30-
if (Properties.isMac) bloopCacheDir
31-
else bloopDataDir
32-
val dir = baseDir.resolve("daemon")
33-
Files.createDirectories(dir)
34-
if (!Properties.isWin) {
35-
Files.setPosixFilePermissions(
36-
dir,
37-
PosixFilePermissions.fromString("rwx------")
38-
)
28+
lazy val daemonDir: Path = {
29+
def defaultDir = {
30+
val baseDir =
31+
if (Properties.isMac) bloopCacheDir
32+
else bloopDataDir
33+
baseDir.resolve("daemon")
34+
}
35+
val dir = Option(System.getenv("BLOOP_DAEMON_DIR")).filter(_.trim.nonEmpty) match {
36+
case Some(dirStr) => Paths.get(dirStr)
37+
case None => defaultDir
38+
}
39+
if (!Files.exists(dir)) {
40+
Files.createDirectories(dir)
41+
if (!Properties.isWin)
42+
Files.setPosixFilePermissions(
43+
dir,
44+
PosixFilePermissions.fromString("rwx------")
45+
)
3946
}
4047
dir
4148
}
42-
final val daemonPipeName: String = "scala_bloop_server"
49+
def daemonPipeName: String = "scala_bloop_server"
4350
}

shared/src/main/scala/bloop/io/Paths.scala

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,35 @@ import java.nio.file.NoSuchFileException
2020
import scala.util.Properties
2121

2222
object Paths {
23-
private val projectDirectories = ProjectDirectories.from("", "", "bloop")
23+
private lazy val projectDirectories = ProjectDirectories.from("", "", "bloop")
2424
private def createDirFor(filepath: String): AbsolutePath =
2525
AbsolutePath(Files.createDirectories(NioPaths.get(filepath)))
2626

27-
final val bloopCacheDir: AbsolutePath = createDirFor(projectDirectories.cacheDir)
28-
final val bloopDataDir: AbsolutePath = createDirFor(projectDirectories.dataDir)
29-
final val bloopLogsDir: AbsolutePath = createDirFor(bloopDataDir.resolve("logs").syntax)
30-
final val bloopConfigDir: AbsolutePath = createDirFor(projectDirectories.configDir)
31-
32-
final val daemonDir: AbsolutePath = {
33-
val baseDir =
34-
if (Properties.isMac) bloopCacheDir
35-
else bloopDataDir
36-
val dir = baseDir.resolve("daemon")
37-
if (!Files.exists(dir.underlying)) {
38-
Files.createDirectories(dir.underlying)
39-
if (!Properties.isWin) {
27+
private lazy val bloopCacheDir: AbsolutePath = createDirFor(projectDirectories.cacheDir)
28+
private lazy val bloopDataDir: AbsolutePath = createDirFor(projectDirectories.dataDir)
29+
30+
lazy val daemonDir: AbsolutePath = {
31+
def defaultDir = {
32+
val baseDir =
33+
if (Properties.isMac) bloopCacheDir.underlying
34+
else bloopDataDir.underlying
35+
baseDir.resolve("daemon")
36+
}
37+
val dir = Option(System.getenv("BLOOP_DAEMON_DIR")).filter(_.trim.nonEmpty) match {
38+
case Some(dirStr) => java.nio.file.Paths.get(dirStr)
39+
case None => defaultDir
40+
}
41+
if (!Files.exists(dir)) {
42+
Files.createDirectories(dir)
43+
if (!Properties.isWin)
4044
Files.setPosixFilePermissions(
41-
dir.underlying,
45+
dir,
4246
PosixFilePermissions.fromString("rwx------")
4347
)
44-
}
4548
}
46-
dir
49+
AbsolutePath(dir)
4750
}
48-
49-
final val pipeName: String = "scala_bloop_server"
51+
def pipeName: String = "scala_bloop_server"
5052

5153
def getCacheDirectory(dirName: String): AbsolutePath = {
5254
val dir = bloopCacheDir.resolve(dirName)

0 commit comments

Comments
 (0)