Skip to content

Commit 4205554

Browse files
committed
Refactor: put all used environment variable keys in a common util with descriptions
1 parent 11c2a28 commit 4205554

File tree

19 files changed

+163
-49
lines changed

19 files changed

+163
-49
lines changed

modules/build/src/main/scala/scala/build/Directories.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import coursier.cache.shaded.dirs.{GetWinDirs, ProjectDirectories}
44

55
import scala.build.errors.ConfigDbException
66
import scala.build.internal.JniGetWinDirs
7+
import scala.build.internals.EnvsUtil
78
import scala.cli.config.ConfigDb
89
import scala.util.Properties
910

@@ -19,7 +20,7 @@ trait Directories {
1920
def cacheDir: os.Path
2021

2122
final def dbPath: os.Path =
22-
Option(System.getenv("SCALA_CLI_CONFIG"))
23+
EnvsUtil.EnvVar.ScalaCli.config.valueOpt
2324
.filter(_.trim.nonEmpty)
2425
.map(os.Path(_, os.pwd))
2526
.getOrElse(secretsDir / Directories.defaultDbFileName)
@@ -95,7 +96,7 @@ object Directories {
9596
SubDir(dir)
9697

9798
lazy val directories: Directories =
98-
Option(System.getenv("SCALA_CLI_HOME")).filter(_.trim.nonEmpty) match {
99+
EnvsUtil.EnvVar.ScalaCli.home.valueOpt.filter(_.trim.nonEmpty) match {
99100
case None =>
100101
scala.build.Directories.default()
101102
case Some(homeDir) =>

modules/build/src/main/scala/scala/build/internal/Runner.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import java.nio.file.{Files, Path, Paths}
1212
import scala.build.EitherCps.{either, value}
1313
import scala.build.Logger
1414
import scala.build.errors._
15+
import scala.build.internals.EnvsUtil
1516
import scala.build.testrunner.{AsmTestRunner, TestRunner}
1617
import scala.util.{Failure, Properties, Success}
1718

@@ -191,12 +192,12 @@ object Runner {
191192
if (Paths.get(app).getNameCount >= 2) Some(asIs)
192193
else {
193194
def pathEntries =
194-
Option(System.getenv("PATH"))
195+
EnvsUtil.EnvVar.Misc.path.valueOpt
195196
.iterator
196197
.flatMap(_.split(File.pathSeparator).iterator)
197198
def pathSep =
198199
if (Properties.isWin)
199-
Option(System.getenv("PATHEXT"))
200+
EnvsUtil.EnvVar.Misc.pathExt.valueOpt
200201
.iterator
201202
.flatMap(_.split(File.pathSeparator).iterator)
202203
else Iterator("")

modules/build/src/main/scala/scala/build/internal/zip/WrappedZipInputStream.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package scala.build.internal.zip
33
import java.io.{Closeable, InputStream}
44
import java.util.zip.ZipEntry
55

6+
import scala.build.internals.EnvsUtil
7+
68
/*
79
* juz.ZipInputStream is buggy on Arch Linux from native images (CRC32 calculation issues,
810
* see oracle/graalvm#4479), so we use a custom ZipInputStream with disabled CRC32 calculation.
@@ -35,7 +37,7 @@ object WrappedZipInputStream {
3537
case "true" | "1" => true
3638
case _ => false
3739
}
38-
Option(System.getenv("SCALA_CLI_VENDORED_ZIS")).map(toBoolean)
40+
EnvsUtil.EnvVar.ScalaCli.vendoredZipInputStream.valueOpt.map(toBoolean)
3941
.orElse(sys.props.get("scala-cli.zis.vendored").map(toBoolean))
4042
.getOrElse(false)
4143
}

modules/build/src/test/scala/scala/build/tests/util/BloopServer.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package scala.build.tests.util
33
import bloop.rifle.BloopRifleConfig
44
import coursier.cache.FileCache
55

6+
import scala.build.internals.EnvsUtil
67
import scala.build.{Bloop, Logger}
78
import scala.util.Properties
89

@@ -30,7 +31,7 @@ object BloopServer {
3031
// which can have issues with the directory of "java" in the PATH,
3132
// if it contains '+' or '%' IIRC.
3233
// So we hardcode the path to "java" here.
33-
Option(System.getenv("JAVA_HOME"))
34+
EnvsUtil.EnvVar.Java.javaHome.valueOpt
3435
.map(os.Path(_, os.pwd))
3536
.map(_ / "bin" / "java")
3637
.map(_.toString)

modules/cli/src/main/scala/scala/cli/ScalaCli.scala

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import java.util.Locale
1111

1212
import scala.build.Directories
1313
import scala.build.internal.Constants
14+
import scala.build.internals.EnvsUtil
1415
import scala.cli.config.{ConfigDb, Keys}
1516
import scala.cli.internal.Argv0
1617
import scala.cli.javaLauncher.JavaLauncherCli
@@ -45,7 +46,7 @@ object ScalaCli {
4546
powerEntry <- configDb.get(Keys.power).toOption
4647
power <- powerEntry
4748
} yield power
48-
val isPowerEnv = Option(System.getenv("SCALA_CLI_POWER")).flatMap(_.toBooleanOption)
49+
val isPowerEnv = EnvsUtil.EnvVar.ScalaCli.power.valueOpt.flatMap(_.toBooleanOption)
4950
val isPower = isPowerEnv.orElse(isPowerConfigDb).getOrElse(false)
5051
!isPower
5152
}
@@ -94,8 +95,8 @@ object ScalaCli {
9495
baos.toByteArray
9596
}
9697

97-
private def isCI = System.getenv("CI") != null
98-
private def printStackTraces = Option(System.getenv("SCALA_CLI_PRINT_STACK_TRACES"))
98+
private def isCI = EnvsUtil.EnvVar.Internal.ci.valueOpt.nonEmpty
99+
private def printStackTraces = EnvsUtil.EnvVar.ScalaCli.printStackTraces.valueOpt
99100
.map(_.toLowerCase(Locale.ROOT))
100101
.exists {
101102
case "true" | "1" => true
@@ -157,7 +158,7 @@ object ScalaCli {
157158
// for https://github.com/VirtusLab/scala-cli/issues/828
158159
System.err.println(
159160
s"""Running
160-
| export SCALA_CLI_VENDORED_ZIS=true
161+
| export ${EnvsUtil.EnvVar.ScalaCli.vendoredZipInputStream.name}=true
161162
|before running $fullRunnerName might fix the issue.
162163
|""".stripMargin
163164
)
@@ -209,7 +210,8 @@ object ScalaCli {
209210
}
210211

211212
// load java properties from JAVA_OPTS and JDK_JAVA_OPTIONS environment variables
212-
val javaOpts = sys.env.get("JAVA_OPTS").toSeq ++ sys.env.get("JDK_JAVA_OPTIONS").toSeq
213+
val javaOpts: Seq[String] =
214+
EnvsUtil.EnvVar.Java.javaOpts.valueOpt.toSeq ++ EnvsUtil.EnvVar.Java.jdkJavaOpts.valueOpt.toSeq
213215

214216
val ignoredJavaOpts =
215217
javaOpts
@@ -224,7 +226,8 @@ object ScalaCli {
224226
}.flatten
225227
if ignoredJavaOpts.nonEmpty then
226228
System.err.println(
227-
s"Warning: Only java properties are supported in JAVA_OPTS and JDK_JAVA_OPTIONS environment variables. Other options are ignored: ${ignoredJavaOpts.mkString(", ")}"
229+
s"Warning: Only java properties are supported in ${EnvsUtil.EnvVar.Java.javaOpts.name} and ${EnvsUtil.EnvVar
230+
.Java.jdkJavaOpts.name} environment variables. Other options are ignored: ${ignoredJavaOpts.mkString(", ")}"
228231
)
229232
}
230233

modules/cli/src/main/scala/scala/cli/commands/addpath/AddPath.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import coursier.env.{EnvironmentUpdate, ProfileUpdater}
66
import java.io.File
77

88
import scala.build.Logger
9+
import scala.build.internals.EnvsUtil
910
import scala.cli.CurrentParams
1011
import scala.cli.commands.{CustomWindowsEnvVarUpdater, ScalaCommand}
1112
import scala.util.Properties
@@ -16,7 +17,10 @@ object AddPath extends ScalaCommand[AddPathOptions] {
1617
override def runCommand(options: AddPathOptions, args: RemainingArgs, logger: Logger): Unit = {
1718
if args.all.isEmpty then logger.error("Nothing to do")
1819
else {
19-
val update = EnvironmentUpdate(Nil, Seq("PATH" -> args.all.mkString(File.pathSeparator)))
20+
val update = EnvironmentUpdate(
21+
Nil,
22+
Seq(EnvsUtil.EnvVar.Misc.path.name -> args.all.mkString(File.pathSeparator))
23+
)
2024
val didUpdate =
2125
if (Properties.isWin) {
2226
val updater = CustomWindowsEnvVarUpdater().withUseJni(Some(coursier.paths.Util.useJni()))

modules/cli/src/main/scala/scala/cli/commands/bsp/Bsp.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import scala.build.*
99
import scala.build.bsp.{BspReloadableOptions, BspThreads}
1010
import scala.build.errors.BuildException
1111
import scala.build.input.Inputs
12+
import scala.build.internals.EnvsUtil
1213
import scala.build.options.{BuildOptions, Scope}
1314
import scala.cli.commands.ScalaCommand
1415
import scala.cli.commands.publish.ConfigUtil.*
@@ -63,7 +64,7 @@ object Bsp extends ScalaCommand[BspOptions] {
6364
.flatMap(_.get(Keys.power).toOption)
6465
.flatten
6566
.getOrElse(false)
66-
val envPowerMode = latestEnvs.get("SCALA_CLI_POWER").exists(_.toBoolean)
67+
val envPowerMode = latestEnvs.get(EnvsUtil.EnvVar.ScalaCli.power.name).exists(_.toBoolean)
6768
val launcherPowerArg = latestLauncherOptions.powerOptions.power
6869
val subCommandPowerArg = latestSharedOptions.powerOptions.power
6970
val latestPowerMode = configPowerMode || launcherPowerArg || subCommandPowerArg || envPowerMode
@@ -208,7 +209,7 @@ object Bsp extends ScalaCommand[BspOptions] {
208209
baseOptions.notForBloopOptions.addRunnerDependencyOpt.orElse(Some(false))
209210
)
210211
)
211-
val withEnvs = envs.get("JAVA_HOME")
212+
val withEnvs = envs.get(EnvsUtil.EnvVar.Java.javaHome.name)
212213
.filter(_ => withDefaults.javaOptions.javaHomeOpt.isEmpty)
213214
.map(javaHome =>
214215
withDefaults.copy(javaOptions =

modules/cli/src/main/scala/scala/cli/commands/github/LibSodiumJni.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import scala.build.EitherCps.{either, value}
1212
import scala.build.Logger
1313
import scala.build.errors.BuildException
1414
import scala.build.internal.{Constants, FetchExternalBinary}
15-
import scala.cli.internal.{Constants => CliConstants}
15+
import scala.build.internals.EnvsUtil
16+
import scala.cli.internal.Constants as CliConstants
1617
import scala.util.Properties
1718
import scala.util.control.NonFatal
1819

@@ -135,7 +136,7 @@ object LibSodiumJni {
135136
case Some(sodiumLib) =>
136137
System.load(sodiumLib.toString)
137138
case None =>
138-
val allow = Option(System.getenv("SCALA_CLI_SODIUM_JNI_ALLOW"))
139+
val allow = EnvsUtil.EnvVar.ScalaCli.allowSodiumJni.valueOpt
139140
.map(_.toLowerCase(Locale.ROOT))
140141
.forall {
141142
case "false" | "0" => false

modules/cli/src/main/scala/scala/cli/commands/installcompletions/InstallCompletions.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import java.nio.charset.Charset
99
import java.nio.file.Paths
1010
import java.util
1111

12+
import scala.build.internals.EnvsUtil
1213
import scala.build.{Directories, Logger}
1314
import scala.cli.commands.shared.HelpGroup
1415
import scala.cli.commands.{ScalaCommand, SpecificationLevel}
@@ -57,7 +58,7 @@ object InstallCompletions extends ScalaCommand[InstallCompletionsOptions] {
5758
(script, defaultRcFile)
5859
case Zsh.id | "zsh" =>
5960
val completionScript = Zsh.script(name)
60-
val zDotDir = Option(System.getenv("ZDOTDIR"))
61+
val zDotDir = EnvsUtil.EnvVar.Misc.zDotDir.valueOpt
6162
.map(os.Path(_, os.pwd))
6263
.getOrElse(os.home)
6364
val defaultRcFile = zDotDir / ".zshrc"
@@ -114,7 +115,7 @@ object InstallCompletions extends ScalaCommand[InstallCompletionsOptions] {
114115
def getFormat(format: Option[String]): Option[String] =
115116
format.map(_.trim).filter(_.nonEmpty)
116117
.orElse {
117-
Option(System.getenv("SHELL")).map(_.split("[\\/]+").last).map {
118+
EnvsUtil.EnvVar.Misc.shell.valueOpt.map(_.split("[\\/]+").last).map {
118119
case "bash" => Bash.id
119120
case "zsh" => Zsh.id
120121
case other => other

modules/cli/src/main/scala/scala/cli/commands/publish/PublishParamsOptions.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.cli.commands.publish
22

33
import caseapp.*
44

5+
import scala.build.internals.EnvsUtil
56
import scala.cli.commands.shared.{HelpGroup, SharedVersionOptions}
67
import scala.cli.commands.tags
78
import scala.cli.signing.shared.PasswordOption
@@ -77,10 +78,8 @@ final case class PublishParamsOptions(
7778
) {
7879
// format: on
7980

80-
def setupCi: Boolean =
81-
ci.getOrElse(false)
82-
def isCi: Boolean =
83-
ci.getOrElse(System.getenv("CI") != null)
81+
def setupCi: Boolean = ci.getOrElse(false)
82+
def isCi: Boolean = ci.getOrElse(EnvsUtil.EnvVar.Internal.ci.valueOpt.nonEmpty)
8483
}
8584

8685
object PublishParamsOptions {

0 commit comments

Comments
 (0)