Skip to content

Commit 1a03df3

Browse files
Merge pull request #1367 from alexarchambault/config-module
Split config db stuff to a separate config module
2 parents fee5492 + 7082c62 commit 1a03df3

File tree

39 files changed

+556
-192
lines changed

39 files changed

+556
-192
lines changed

build.sc

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ object cli extends Cli
4242

4343
object `cli-options` extends CliOptions
4444
object `build-macros` extends BuildMacros
45+
object config extends Cross[Config](Scala.all: _*)
4546
object options extends Options
4647
object scalaparse extends ScalaParse
4748
object directives extends Directives
@@ -157,10 +158,6 @@ trait BuildMacros extends ScalaCliSbtModule
157158
with ScalaCliScalafixModule
158159
with HasTests {
159160
def scalaVersion = Scala.defaultInternal
160-
def scalacOptions = T {
161-
super.scalacOptions() ++
162-
(if (scalaVersion().startsWith("2.")) Seq("-Ywarn-unused") else Nil)
163-
}
164161
def compileIvyDeps = T {
165162
if (scalaVersion().startsWith("3"))
166163
super.compileIvyDeps()
@@ -400,7 +397,7 @@ trait Directives extends ScalaCliSbtModule with ScalaCliPublishModule with HasTe
400397
def ivyDeps = super.ivyDeps() ++ Agg(
401398
// Deps.asm,
402399
Deps.bloopConfig,
403-
Deps.jsoniterCore,
400+
Deps.jsoniterCore213,
404401
Deps.pprint,
405402
Deps.scalametaTrees,
406403
Deps.scalaparse,
@@ -440,6 +437,29 @@ trait Directives extends ScalaCliSbtModule with ScalaCliPublishModule with HasTe
440437
}
441438
}
442439

440+
class Config(val crossScalaVersion: String) extends ScalaCliCrossSbtModule
441+
with ScalaCliPublishModule
442+
with ScalaCliScalafixModule {
443+
def ivyDeps = {
444+
val maybeCollectionCompat =
445+
if (crossScalaVersion.startsWith("2.12.")) Seq(Deps.collectionCompat)
446+
else Nil
447+
super.ivyDeps() ++ maybeCollectionCompat ++ Agg(
448+
Deps.jsoniterCore
449+
)
450+
}
451+
def compileIvyDeps = super.compileIvyDeps() ++ Agg(
452+
Deps.jsoniterMacros
453+
)
454+
455+
// Disabling Scalafix in 2.13 and 3, so that it doesn't remove
456+
// some compatibility-related imports, that are actually only used
457+
// in Scala 2.12.
458+
def fix(args: String*) =
459+
if (crossScalaVersion.startsWith("2.12.")) super.fix(args: _*)
460+
else T.command(())
461+
}
462+
443463
trait Options extends ScalaCliSbtModule with ScalaCliPublishModule with HasTests
444464
with ScalaCliScalafixModule {
445465
def scalaVersion = Scala.defaultInternal
@@ -497,10 +517,6 @@ class Scala3Graal(val crossScalaVersion: String) extends ScalaCliCrossSbtModule
497517
)
498518
super.resources() ++ Seq(mill.PathRef(extraResourceDir))
499519
}
500-
def scalacOptions = T {
501-
super.scalacOptions() ++
502-
(if (scalaVersion().startsWith("2.")) Seq("-Ywarn-unused") else Nil)
503-
}
504520
}
505521

506522
trait Scala3GraalProcessor extends ScalaModule with ScalaCliPublishModule {
@@ -534,7 +550,7 @@ trait Build extends ScalaCliSbtModule with ScalaCliPublishModule with HasTests
534550
Deps.asm,
535551
Deps.collectionCompat,
536552
Deps.javaClassName,
537-
Deps.jsoniterCore,
553+
Deps.jsoniterCore213,
538554
Deps.nativeTestRunner,
539555
Deps.osLib,
540556
Deps.pprint,
@@ -582,7 +598,7 @@ trait Build extends ScalaCliSbtModule with ScalaCliPublishModule with HasTests
582598
trait CliOptions extends SbtModule with ScalaCliPublishModule with ScalaCliCompile {
583599
def ivyDeps = super.ivyDeps() ++ Agg(
584600
Deps.caseApp,
585-
Deps.jsoniterCore,
601+
Deps.jsoniterCore213,
586602
Deps.osLib,
587603
Deps.signingCliOptions
588604
)
@@ -651,15 +667,15 @@ trait Cli extends SbtModule with ProtoBuildModule with CliLaunchers
651667
def scalaVersion = T(myScalaVersion)
652668

653669
def scalacOptions = T {
654-
super.scalacOptions() ++ asyncScalacOptions(scalaVersion()) ++
655-
(if (scalaVersion().startsWith("2.")) Seq("-Ywarn-unused") else Nil)
670+
super.scalacOptions() ++ asyncScalacOptions(scalaVersion())
656671
}
657672
def javacOptions = T {
658673
super.javacOptions() ++ Seq("--release", "16")
659674
}
660675
def moduleDeps = Seq(
661676
`build-module`,
662677
`cli-options`,
678+
config(Scala.scala3),
663679
`scala3-graal`(Scala.scala3)
664680
)
665681

@@ -671,7 +687,7 @@ trait Cli extends SbtModule with ProtoBuildModule with CliLaunchers
671687
Deps.coursierPublish,
672688
Deps.jimfs, // scalaJsEnvNodeJs pulls jimfs:1.1, whose class path seems borked (bin compat issue with the guava version it depends on)
673689
Deps.jniUtils,
674-
Deps.jsoniterCore,
690+
Deps.jsoniterCore213,
675691
Deps.libsodiumjni,
676692
Deps.metaconfigTypesafe,
677693
Deps.pythonNativeLibs,
@@ -724,7 +740,7 @@ trait CliIntegration extends SbtModule with ScalaCliPublishModule with HasTests
724740
PathRef(T.dest / "working-dir")
725741
}
726742
def scalacOptions = T {
727-
super.scalacOptions() ++ Seq("-Xasync", "-Ywarn-unused", "-deprecation")
743+
super.scalacOptions() ++ Seq("-Xasync", "-deprecation")
728744
}
729745

730746
def modulesPath = T {
@@ -752,7 +768,7 @@ trait CliIntegration extends SbtModule with ScalaCliPublishModule with HasTests
752768
Deps.coursier
753769
.exclude(("com.github.plokhotnyuk.jsoniter-scala", "jsoniter-scala-macros")),
754770
Deps.dockerClient,
755-
Deps.jsoniterCore,
771+
Deps.jsoniterCore213,
756772
Deps.libsodiumjni,
757773
Deps.pprint,
758774
Deps.scalaAsync,
@@ -939,11 +955,7 @@ class Runner(val crossScalaVersion: String) extends ScalaCliCrossSbtModule
939955
with ScalaCliPublishModule
940956
with ScalaCliScalafixModule {
941957
def scalacOptions = T {
942-
super.scalacOptions() ++ {
943-
if (scalaVersion().startsWith("2.")) Seq("-Ywarn-unused")
944-
else Nil
945-
} ++ Seq("-release", "8")
946-
958+
super.scalacOptions() ++ Seq("-release", "8")
947959
}
948960
def mainClass = Some("scala.cli.runner.Runner")
949961
def sources = T.sources {
@@ -965,10 +977,7 @@ class TestRunner(val crossScalaVersion: String) extends ScalaCliCrossSbtModule
965977
with ScalaCliPublishModule
966978
with ScalaCliScalafixModule {
967979
def scalacOptions = T {
968-
super.scalacOptions() ++ {
969-
if (scalaVersion().startsWith("2.")) Seq("-Ywarn-unused", "-deprecation")
970-
else Nil
971-
} ++ Seq("-release", "8")
980+
super.scalacOptions() ++ Seq("-release", "8")
972981
}
973982
def ivyDeps = super.ivyDeps() ++ Agg(
974983
Deps.asm,
@@ -983,9 +992,7 @@ class BloopRifle(val crossScalaVersion: String) extends ScalaCliCrossSbtModule
983992
with HasTests
984993
with ScalaCliScalafixModule {
985994
def scalacOptions = T {
986-
super.scalacOptions() ++
987-
(if (scalaVersion().startsWith("2.")) Seq("-Ywarn-unused") else Nil) ++
988-
Seq("-deprecation")
995+
super.scalacOptions() ++ Seq("-deprecation")
989996
}
990997
def ivyDeps = super.ivyDeps() ++ Agg(
991998
Deps.bsp4j,
@@ -1023,12 +1030,6 @@ class BloopRifle(val crossScalaVersion: String) extends ScalaCliCrossSbtModule
10231030
class TastyLib(val crossScalaVersion: String) extends ScalaCliCrossSbtModule
10241031
with ScalaCliPublishModule
10251032
with ScalaCliScalafixModule {
1026-
def scalacOptions = T(
1027-
super.scalacOptions() ++ {
1028-
if (scalaVersion().startsWith("2.")) Seq("-Ywarn-unused")
1029-
else Nil
1030-
}
1031-
)
10321033
def constantsFile = T.persistent {
10331034
val dir = T.dest / "constants"
10341035
val dest = dir / "Constants.scala"

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,16 @@ trait Directories {
1515
def bloopWorkingDir: os.Path
1616
def secretsDir: os.Path
1717
def cacheDir: os.Path
18+
19+
final def dbPath: os.Path =
20+
secretsDir / Directories.defaultDbFileName
1821
}
1922

2023
object Directories {
2124

25+
def defaultDbFileName: String =
26+
"config.json"
27+
2228
final case class OsLocations(projDirs: ProjectDirectories) extends Directories {
2329
lazy val localRepoDir: os.Path =
2430
os.Path(projDirs.cacheDir, Os.pwd) / "local-repo"

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import scala.build.internal.CustomCodeWrapper
1010
import scala.build.options.BuildOptions
1111
import scala.build.{Build, CrossSources, Inputs, PersistentDiagnosticLogger, Sources}
1212
import scala.cli.CurrentParams
13+
import scala.cli.commands.publish.ConfigUtil._
1314
import scala.cli.commands.util.CommonOps._
1415
import scala.cli.commands.util.SharedOptionsUtil._
1516
import scala.cli.config.{ConfigDb, Keys}
@@ -70,8 +71,7 @@ object Bsp extends ScalaCommand[BspOptions] {
7071
val logger = getSharedOptions().logging.logger
7172
val inputs = argsToInputs(args.all).orExit(logger)
7273
CurrentParams.workspaceOpt = Some(inputs.workspace)
73-
val configDb = ConfigDb.open(options.shared.directories.directories)
74-
.orExit(logger)
74+
val configDb = options.shared.configDb
7575
val actionableDiagnostics =
7676
options.shared.logging.verbosityOptions.actions.orElse(
7777
configDb.get(Keys.actions).getOrElse(None)

modules/cli/src/main/scala/scala/cli/commands/Compile.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import java.io.File
77
import scala.build.options.Scope
88
import scala.build.{Build, BuildThreads, Builds, Os}
99
import scala.cli.CurrentParams
10+
import scala.cli.commands.publish.ConfigUtil._
1011
import scala.cli.commands.util.BuildCommandHelpers
1112
import scala.cli.commands.util.CommonOps.SharedDirectoriesOptionsOps
1213
import scala.cli.commands.util.SharedOptionsUtil._
@@ -77,8 +78,7 @@ object Compile extends ScalaCommand[CompileOptions] with BuildCommandHelpers {
7778
val threads = BuildThreads.create()
7879

7980
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)
80-
val configDb = ConfigDb.open(options.shared.directories.directories)
81-
.orExit(logger)
81+
val configDb = options.shared.configDb
8282
val actionableDiagnostics =
8383
options.shared.logging.verbosityOptions.actions.orElse(
8484
configDb.get(Keys.actions).getOrElse(None)

modules/cli/src/main/scala/scala/cli/commands/Doc.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import scala.build.errors.BuildException
1212
import scala.build.interactive.InteractiveFileOps
1313
import scala.build.internal.Runner
1414
import scala.cli.CurrentParams
15+
import scala.cli.commands.publish.ConfigUtil._
1516
import scala.cli.commands.util.CommonOps.SharedDirectoriesOptionsOps
1617
import scala.cli.commands.util.SharedOptionsUtil._
1718
import scala.cli.config.{ConfigDb, Keys}
@@ -35,8 +36,7 @@ object Doc extends ScalaCommand[DocOptions] {
3536
val compilerMaker = ScalaCompilerMaker.IgnoreScala2(maker)
3637
val docCompilerMakerOpt = Some(SimpleScalaCompilerMaker("java", Nil, scaladoc = true))
3738

38-
val configDb = ConfigDb.open(options.shared.directories.directories)
39-
.orExit(logger)
39+
val configDb = options.shared.configDb
4040
val actionableDiagnostics =
4141
options.shared.logging.verbosityOptions.actions.orElse(
4242
configDb.get(Keys.actions).getOrElse(None)

modules/cli/src/main/scala/scala/cli/commands/Metabrowse.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import java.io.File
88
import scala.build.internal.{Constants, ExternalBinaryParams, FetchExternalBinary, Runner}
99
import scala.build.{Build, BuildThreads, Logger}
1010
import scala.cli.CurrentParams
11+
import scala.cli.commands.publish.ConfigUtil._
1112
import scala.cli.commands.util.CommonOps.SharedDirectoriesOptionsOps
1213
import scala.cli.commands.util.SharedOptionsUtil._
1314
import scala.cli.config.{ConfigDb, Keys}
@@ -58,8 +59,7 @@ object Metabrowse extends ScalaCommand[MetabrowseOptions] {
5859
val threads = BuildThreads.create()
5960

6061
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)
61-
val configDb = ConfigDb.open(options.shared.directories.directories)
62-
.orExit(logger)
62+
val configDb = options.shared.configDb
6363
val actionableDiagnostics =
6464
options.shared.logging.verbosityOptions.actions.orElse(
6565
configDb.get(Keys.actions).getOrElse(None)

modules/cli/src/main/scala/scala/cli/commands/Package.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import scala.cli.CurrentParams
2929
import scala.cli.commands.OptionsHelper.*
3030
import scala.cli.commands.Run.orPythonDetectionError
3131
import scala.cli.commands.packaging.Spark
32+
import scala.cli.commands.publish.ConfigUtil._
3233
import scala.cli.commands.util.BuildCommandHelpers
3334
import scala.cli.commands.util.CommonOps.SharedDirectoriesOptionsOps
3435
import scala.cli.commands.util.MainClassOptionsUtil.*
@@ -61,9 +62,8 @@ object Package extends ScalaCommand[PackageOptions] with BuildCommandHelpers {
6162
val compilerMaker = options.compilerMaker(threads).orExit(logger)
6263
val docCompilerMakerOpt = options.docCompilerMakerOpt
6364

64-
val cross = options.compileCross.cross.getOrElse(false)
65-
val configDb = ConfigDb.open(options.shared.directories.directories)
66-
.orExit(logger)
65+
val cross = options.compileCross.cross.getOrElse(false)
66+
val configDb = options.shared.configDb
6767
val actionableDiagnostics =
6868
options.shared.logging.verbosityOptions.actions.orElse(
6969
configDb.get(Keys.actions).getOrElse(None)

modules/cli/src/main/scala/scala/cli/commands/Repl.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import scala.build.internal.Runner
1111
import scala.build.options.{BuildOptions, JavaOpt, Scope}
1212
import scala.cli.CurrentParams
1313
import scala.cli.commands.Run.maybePrintSimpleScalacOutput
14+
import scala.cli.commands.publish.ConfigUtil._
1415
import scala.cli.commands.util.CommonOps._
1516
import scala.cli.commands.util.SharedOptionsUtil._
1617
import scala.cli.config.{ConfigDb, Keys}
@@ -117,9 +118,8 @@ object Repl extends ScalaCommand[ReplOptions] {
117118
}
118119
}
119120

120-
val cross = options.sharedRepl.compileCross.cross.getOrElse(false)
121-
val configDb = ConfigDb.open(options.shared.directories.directories)
122-
.orExit(logger)
121+
val cross = options.sharedRepl.compileCross.cross.getOrElse(false)
122+
val configDb = options.shared.configDb
123123
val actionableDiagnostics =
124124
options.shared.logging.verbosityOptions.actions.orElse(
125125
configDb.get(Keys.actions).getOrElse(None)

modules/cli/src/main/scala/scala/cli/commands/Run.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import scala.build.errors.BuildException
1212
import scala.build.internal.{Constants, Runner, ScalaJsLinkerConfig}
1313
import scala.build.options.{BuildOptions, JavaOpt, Platform, ScalacOpt}
1414
import scala.cli.CurrentParams
15+
import scala.cli.commands.publish.ConfigUtil._
1516
import scala.cli.commands.run.RunMode
1617
import scala.cli.commands.util.CommonOps.SharedDirectoriesOptionsOps
1718
import scala.cli.commands.util.MainClassOptionsUtil.*
@@ -186,8 +187,7 @@ object Run extends ScalaCommand[RunOptions] with BuildCommandHelpers {
186187
if (CommandUtils.shouldCheckUpdate)
187188
Update.checkUpdateSafe(logger)
188189

189-
val configDb = ConfigDb.open(options.shared.directories.directories)
190-
.orExit(logger)
190+
val configDb = options.shared.configDb
191191
val actionableDiagnostics =
192192
options.shared.logging.verbosityOptions.actions.orElse(
193193
configDb.get(Keys.actions).getOrElse(None)

modules/cli/src/main/scala/scala/cli/commands/Test.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import scala.build.options.{BuildOptions, JavaOpt, Platform, Scope}
1212
import scala.build.testrunner.AsmTestRunner
1313
import scala.build.{Build, BuildThreads, Builds, CrossKey, Logger, Positioned}
1414
import scala.cli.CurrentParams
15+
import scala.cli.commands.publish.ConfigUtil._
1516
import scala.cli.commands.util.CommonOps.SharedDirectoriesOptionsOps
1617
import scala.cli.commands.util.SharedOptionsUtil._
1718
import scala.cli.config.{ConfigDb, Keys}
@@ -65,9 +66,8 @@ object Test extends ScalaCommand[TestOptions] {
6566

6667
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)
6768

68-
val cross = options.compileCross.cross.getOrElse(false)
69-
val configDb = ConfigDb.open(options.shared.directories.directories)
70-
.orExit(logger)
69+
val cross = options.compileCross.cross.getOrElse(false)
70+
val configDb = options.shared.configDb
7171
val actionableDiagnostics =
7272
options.shared.logging.verbosityOptions.actions.orElse(
7373
configDb.get(Keys.actions).getOrElse(None)

0 commit comments

Comments
 (0)