Skip to content

Commit 6628baa

Browse files
authored
Add config support for suppress warning flag (#1779)
1 parent 2db17f0 commit 6628baa

File tree

5 files changed

+49
-3
lines changed

5 files changed

+49
-3
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ object Bsp extends ScalaCommand[BspOptions] {
5959
() => buildOptions0.javaHome().value.javaCommand
6060
),
6161
persistentLogger,
62-
sharedOptions.suppress.suppressDirectivesInMultipleFilesWarning
62+
buildOptions0.suppressWarningOptions.suppressDirectivesInMultipleFilesWarning
6363
).map(_._2).getOrElse(initialInputs)
6464

6565
Build.updateInputs(allInputs, buildOptions(sharedOptions))

modules/cli/src/main/scala/scala/cli/commands/dependencyupdate/DependencyUpdate.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ object DependencyUpdate extends ScalaCommand[DependencyUpdateOptions] {
3636
() => buildOptions.javaHome().value.javaCommand
3737
),
3838
logger,
39-
options.shared.suppress.suppressDirectivesInMultipleFilesWarning
39+
buildOptions.suppressWarningOptions.suppressDirectivesInMultipleFilesWarning
4040
).orExit(logger)
4141

4242
val scopedSources = crossSources.scopedSources(buildOptions).orExit(logger)

modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ final case class SharedOptions(
273273
}
274274
bo.BuildOptions(
275275
suppressWarningOptions =
276-
bo.SuppressWarningOptions(suppress.suppressDirectivesInMultipleFilesWarning),
276+
bo.SuppressWarningOptions(suppressDirectivesInMultipleFilesWarning),
277277
scalaOptions = bo.ScalaOptions(
278278
scalaVersion = scalaVersion
279279
.map(_.trim)
@@ -420,6 +420,18 @@ final case class SharedOptions(
420420
}
421421
}
422422

423+
def suppressDirectivesInMultipleFilesWarning: Option[Boolean] =
424+
suppress.suppressDirectivesInMultipleFilesWarning.filter(identity).orElse(
425+
configDb.map(_.get(Keys.suppressDirectivesInMultipleFilesWarning))
426+
.map {
427+
case Right(opt) => opt
428+
case Left(ex) =>
429+
logger.debug(ConfigDbException(ex))
430+
None
431+
}
432+
.getOrElse(None)
433+
)
434+
423435
def configDb: Either[BuildException, ConfigDb] =
424436
ConfigDb.open(directories.directories.dbPath.toNIO)
425437
.wrapConfigException

modules/config/src/main/scala/scala/cli/config/Keys.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ object Keys {
2121

2222
val interactive = new Key.BooleanEntry(Seq.empty, "interactive")
2323

24+
val suppressDirectivesInMultipleFilesWarning =
25+
new Key.BooleanEntry(Seq("suppress-warning"), "directives-in-multiple-files")
26+
2427
val proxyAddress = new Key.StringEntry(Seq("httpProxy"), "address")
2528
val proxyUser = new Key.PasswordEntry(Seq("httpProxy"), "user")
2629
val proxyPassword = new Key.PasswordEntry(Seq("httpProxy"), "password")
@@ -40,6 +43,7 @@ object Keys {
4043
ghToken,
4144
globalInteractiveWasSuggested,
4245
interactive,
46+
suppressDirectivesInMultipleFilesWarning,
4347
pgpPublicKey,
4448
pgpSecretKey,
4549
pgpSecretKeyPassword,

modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,36 @@ abstract class RunTestDefinitions(val scalaVersionOpt: Option[String])
733733
}
734734
}
735735

736+
test("suppress multiple using directives warning message with global config") {
737+
val inputs = TestInputs(
738+
os.rel / "Foo.scala" ->
739+
s"""//> using scala "3.2.0"
740+
|
741+
|object Foo extends App {
742+
| println("Foo")
743+
|}
744+
|""".stripMargin,
745+
os.rel / "Bar.scala" -> "",
746+
os.rel / "Hello.java" -> "//> using packaging.output \"out\""
747+
)
748+
inputs.fromRoot { root =>
749+
val warningMessage = "Using directives detected in"
750+
751+
os.proc(TestUtil.cli, "config", "suppress-warning.directives-in-multiple-files", "true")
752+
.call(cwd = root)
753+
754+
val output =
755+
os.proc(TestUtil.cli, ".").call(
756+
cwd = root,
757+
stderr = os.Pipe
758+
).err.trim()
759+
expect(!output.contains(warningMessage))
760+
761+
os.proc(TestUtil.cli, "config", "suppress-warning.directives-in-multiple-files", "false")
762+
.call(cwd = root)
763+
}
764+
}
765+
736766
def sudoTest(): Unit = {
737767
val fileName = "simple.sc"
738768
val message = "Hello"

0 commit comments

Comments
 (0)