From fe48d92f7e05ede1d48349928f5660c9deaa17d0 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Thu, 18 Jan 2024 10:15:01 +0100 Subject: [PATCH 1/4] NIT Move SemanticDB-related integration tests to a dedicated trait --- .../integration/CompileTestDefinitions.scala | 77 +----------------- .../SemanticDbTestDefinitions.scala | 79 +++++++++++++++++++ 2 files changed, 81 insertions(+), 75 deletions(-) create mode 100644 modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala diff --git a/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala index a8e2964880..ad6f1b119e 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala @@ -9,7 +9,8 @@ import scala.cli.integration.util.BloopUtil abstract class CompileTestDefinitions(val scalaVersionOpt: Option[String]) extends ScalaCliSuite with TestScalaVersionArgs - with CompilerPluginTestDefinitions { + with CompilerPluginTestDefinitions + with SemanticDbTestDefinitions { protected lazy val extraOptions: Seq[String] = scalaVersionArgs ++ TestUtil.extraOptions @@ -467,80 +468,6 @@ abstract class CompileTestDefinitions(val scalaVersionOpt: Option[String]) } } - test("Manual javac SemanticDB") { - val inputs = TestInputs( - os.rel / "foo" / "Test.java" -> - """package foo; - | - |public class Test { - | public static void main(String[] args) { - | System.err.println("Hello"); - | } - |} - |""".stripMargin - ) - inputs.fromRoot { root => - val compilerPackages = Seq( - "com.sun.tools.javac.api", - "com.sun.tools.javac.code", - "com.sun.tools.javac.model", - "com.sun.tools.javac.tree", - "com.sun.tools.javac.util" - ) - val exports = compilerPackages - .flatMap { pkg => - Seq("-J--add-exports", s"-Jjdk.compiler/$pkg=ALL-UNNAMED") - } - .flatMap(opt => List("--javac-opt", opt)) - val javaSemDbOptions = Seq( - "--javac-plugin", - "com.sourcegraph:semanticdb-javac:0.7.4", - "--javac-opt", - s"-Xplugin:semanticdb -sourceroot:$root -targetroot:javac-classes-directory" - ) ++ exports - os.proc(TestUtil.cli, "compile", extraOptions, javaSemDbOptions, ".") - .call(cwd = root) - - val files = os.walk(root / Constants.workspaceDirName) - val semDbFiles = files - .filter(_.last.endsWith(".semanticdb")) - .filter(!_.segments.exists(_ == "bloop-internal-classes")) - expect(semDbFiles.length == 1) - val semDbFile = semDbFiles.head - expect( - semDbFile.endsWith(os.rel / "META-INF" / "semanticdb" / "foo" / "Test.java.semanticdb") - ) - } - } - - test("Javac SemanticDB") { - val inputs = TestInputs( - os.rel / "foo" / "Test.java" -> - """package foo; - | - |public class Test { - | public static void main(String[] args) { - | System.err.println("Hello"); - | } - |} - |""".stripMargin - ) - inputs.fromRoot { root => - os.proc(TestUtil.cli, "compile", extraOptions, "--semantic-db", ".") - .call(cwd = root) - - val files = os.walk(root / Constants.workspaceDirName) - val semDbFiles = files - .filter(_.last.endsWith(".semanticdb")) - .filter(!_.segments.exists(_ == "bloop-internal-classes")) - expect(semDbFiles.length == 1) - val semDbFile = semDbFiles.head - expect( - semDbFile.endsWith(os.rel / "META-INF" / "semanticdb" / "foo" / "Test.java.semanticdb") - ) - } - } - if (actualScalaVersion.startsWith("3")) test("generate scoverage.coverage file") { val fileName = "Hello.scala" diff --git a/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala new file mode 100644 index 0000000000..fb7bd86dd4 --- /dev/null +++ b/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala @@ -0,0 +1,79 @@ +package scala.cli.integration + +import com.eed3si9n.expecty.Expecty.expect + +trait SemanticDbTestDefinitions { _: CompileTestDefinitions => + test("Manual javac SemanticDB") { + val inputs = TestInputs( + os.rel / "foo" / "Test.java" -> + """package foo; + | + |public class Test { + | public static void main(String[] args) { + | System.err.println("Hello"); + | } + |} + |""".stripMargin + ) + inputs.fromRoot { root => + val compilerPackages = Seq( + "com.sun.tools.javac.api", + "com.sun.tools.javac.code", + "com.sun.tools.javac.model", + "com.sun.tools.javac.tree", + "com.sun.tools.javac.util" + ) + val exports = compilerPackages + .flatMap { pkg => + Seq("-J--add-exports", s"-Jjdk.compiler/$pkg=ALL-UNNAMED") + } + .flatMap(opt => List("--javac-opt", opt)) + val javaSemDbOptions = Seq( + "--javac-plugin", + "com.sourcegraph:semanticdb-javac:0.7.4", + "--javac-opt", + s"-Xplugin:semanticdb -sourceroot:$root -targetroot:javac-classes-directory" + ) ++ exports + os.proc(TestUtil.cli, "compile", extraOptions, javaSemDbOptions, ".") + .call(cwd = root) + + val files = os.walk(root / Constants.workspaceDirName) + val semDbFiles = files + .filter(_.last.endsWith(".semanticdb")) + .filter(!_.segments.exists(_ == "bloop-internal-classes")) + expect(semDbFiles.length == 1) + val semDbFile = semDbFiles.head + expect( + semDbFile.endsWith(os.rel / "META-INF" / "semanticdb" / "foo" / "Test.java.semanticdb") + ) + } + } + + test("Javac SemanticDB") { + val inputs = TestInputs( + os.rel / "foo" / "Test.java" -> + """package foo; + | + |public class Test { + | public static void main(String[] args) { + | System.err.println("Hello"); + | } + |} + |""".stripMargin + ) + inputs.fromRoot { root => + os.proc(TestUtil.cli, "compile", extraOptions, "--semantic-db", ".") + .call(cwd = root) + + val files = os.walk(root / Constants.workspaceDirName) + val semDbFiles = files + .filter(_.last.endsWith(".semanticdb")) + .filter(!_.segments.exists(_ == "bloop-internal-classes")) + expect(semDbFiles.length == 1) + val semDbFile = semDbFiles.head + expect( + semDbFile.endsWith(os.rel / "META-INF" / "semanticdb" / "foo" / "Test.java.semanticdb") + ) + } + } +} From 3984c1d4516055fbdbb79a567f1cfd5abc9eff2e Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Thu, 18 Jan 2024 11:28:10 +0100 Subject: [PATCH 2/4] Add a Scala/Java version agnostic option for setting the SemanticDB target root directory --- .../src/main/scala/scala/build/Build.scala | 39 +++++---- .../cli/commands/shared/SharedOptions.scala | 9 +++ .../SemanticDbTestDefinitions.scala | 81 ++++++++++++------- .../scala/build/options/ScalaOptions.scala | 1 + website/docs/reference/cli-options.md | 9 +++ .../reference/scala-command/cli-options.md | 10 +++ .../scala-command/runner-specification.md | 72 +++++++++++++++++ 7 files changed, 177 insertions(+), 44 deletions(-) diff --git a/modules/build/src/main/scala/scala/build/Build.scala b/modules/build/src/main/scala/scala/build/Build.scala index cb17a550ff..52899c1a90 100644 --- a/modules/build/src/main/scala/scala/build/Build.scala +++ b/modules/build/src/main/scala/scala/build/Build.scala @@ -825,7 +825,8 @@ object Build { val classesDir0 = classesDir(inputs.workspace, inputs.projectName, scope) val scaladocDir = classesDir(inputs.workspace, inputs.projectName, scope, suffix = "-doc") - val generateSemanticDbs = options.scalaOptions.generateSemanticDbs.getOrElse(false) + val generateSemanticDbs = options.scalaOptions.generateSemanticDbs.getOrElse(false) + val semanticDbTargetRoot = options.scalaOptions.semanticDbTargetRoot val releaseFlagVersion = releaseFlag(options, compilerJvmVersionOpt, logger).map(_.toString) @@ -842,21 +843,25 @@ object Build { ScalacOpt(s"-Xplugin:$path") } - val semanticDbScalacOptions = - if (generateSemanticDbs) - if (params.scalaVersion.startsWith("2.")) - Seq( - "-Yrangepos", - "-P:semanticdb:failures:warning", - "-P:semanticdb:synthetics:on", - s"-P:semanticdb:sourceroot:${inputs.workspace}" - ).map(ScalacOpt(_)) - else - Seq( - "-Xsemanticdb", - "-sourceroot", - inputs.workspace.toString - ).map(ScalacOpt(_)) + val semanticDbTargetRootOptions: Seq[ScalacOpt] = + (semanticDbTargetRoot match + case Some(targetRoot) if params.scalaVersion.startsWith("2.") => + Seq(s"-P:semanticdb:targetroot:$targetRoot") + case Some(targetRoot) => Seq("-semanticdb-target", targetRoot.toString) + case None => Nil + ).map(ScalacOpt(_)) + val semanticDbScalacOptions: Seq[ScalacOpt] = + if generateSemanticDbs then + semanticDbTargetRootOptions ++ ( + if params.scalaVersion.startsWith("2.") then + Seq( + "-Yrangepos", + "-P:semanticdb:failures:warning", + "-P:semanticdb:synthetics:on", + s"-P:semanticdb:sourceroot:${inputs.workspace}" + ) + else Seq("-Xsemanticdb", "-sourceroot", inputs.workspace.toString) + ).map(ScalacOpt(_)) else Nil val sourceRootScalacOptions = @@ -924,7 +929,7 @@ object Build { Seq( // does the path need to be escaped somehow? - s"-Xplugin:semanticdb -sourceroot:${inputs.workspace} -targetroot:javac-classes-directory" + s"-Xplugin:semanticdb -sourceroot:${inputs.workspace} -targetroot:${semanticDbTargetRoot.getOrElse("javac-classes-directory")}" ) ++ exports } else diff --git a/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala b/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala index 695a77dd93..f566465abb 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala @@ -190,8 +190,16 @@ final case class SharedOptions( @Hidden @Tag(tags.should) @HelpMessage("Generate SemanticDBs") + @Name("semanticdb") semanticDb: Option[Boolean] = None, + @Hidden + @Tag(tags.should) + @HelpMessage("Force SemanticDB target root (default follows the compiled classes destination directory)") + @Name("semanticdbTargetRoot") + @Name("semanticdbTargetroot") + semanticDbTargetRoot: Option[String] = None, + @Recurse input: SharedInputOptions = SharedInputOptions(), @Recurse @@ -361,6 +369,7 @@ final case class SharedOptions( addScalaLibrary = scalaLibrary.orElse(java.map(!_)), addScalaCompiler = withCompiler, generateSemanticDbs = semanticDb, + semanticDbTargetRoot = semanticDbTargetRoot.map(os.Path(_, os.pwd)), scalacOptions = scalac .scalacOption .withScalacExtraOptions(scalacExtra) diff --git a/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala index fb7bd86dd4..6cf895ba83 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala @@ -3,7 +3,7 @@ package scala.cli.integration import com.eed3si9n.expecty.Expecty.expect trait SemanticDbTestDefinitions { _: CompileTestDefinitions => - test("Manual javac SemanticDB") { + test("Java SemanticDB (manual)") { val inputs = TestInputs( os.rel / "foo" / "Test.java" -> """package foo; @@ -49,31 +49,58 @@ trait SemanticDbTestDefinitions { _: CompileTestDefinitions => } } - test("Javac SemanticDB") { - val inputs = TestInputs( - os.rel / "foo" / "Test.java" -> - """package foo; - | - |public class Test { - | public static void main(String[] args) { - | System.err.println("Hello"); - | } - |} - |""".stripMargin - ) - inputs.fromRoot { root => - os.proc(TestUtil.cli, "compile", extraOptions, "--semantic-db", ".") - .call(cwd = root) - - val files = os.walk(root / Constants.workspaceDirName) - val semDbFiles = files - .filter(_.last.endsWith(".semanticdb")) - .filter(!_.segments.exists(_ == "bloop-internal-classes")) - expect(semDbFiles.length == 1) - val semDbFile = semDbFiles.head - expect( - semDbFile.endsWith(os.rel / "META-INF" / "semanticdb" / "foo" / "Test.java.semanticdb") - ) - } + for { + language <- Seq("Java", "Scala") + sourceFileName = if (language == "Java") "Test.java" else "Test.scala" + inputs = + if (language == "Java") + TestInputs( + os.rel / "foo" / sourceFileName -> + """package foo; + | + |public class Test { + | public static void main(String[] args) { + | System.err.println("Hello"); + | } + |} + |""".stripMargin + ) + else + TestInputs( + os.rel / "foo" / sourceFileName -> + """package foo; + | + |object Test { + | def main(args: Array[String]): Unit = { + | println("Hello") + | } + |} + |""".stripMargin + ) + semanticDbTargetDir <- Seq(None, Some("semanticdb-target")) + targetDirString = semanticDbTargetDir.map(_ => "with forced target root").getOrElse("") } + test(s"$language SemanticDB $targetDirString") { + inputs.fromRoot { root => + val targetDirOptions = + semanticDbTargetDir match { + case Some(targetDir) => Seq("--semantic-db-target-root", targetDir) + case None => Nil + } + os.proc(TestUtil.cli, "compile", extraOptions, "--semantic-db", ".", targetDirOptions) + .call(cwd = root) + val files = os.walk(root) + val semDbFiles = files + .filter(_.last.endsWith(".semanticdb")) + .filter(!_.segments.exists(_ == "bloop-internal-classes")) + expect(semDbFiles.length == 1) + val semDbFile = semDbFiles.head + val expectedSemanticDbPath = + if (semanticDbTargetDir.isDefined) + os.rel / semanticDbTargetDir.get / "META-INF" / "semanticdb" / "foo" / s"$sourceFileName.semanticdb" + else + os.rel / "META-INF" / "semanticdb" / "foo" / s"$sourceFileName.semanticdb" + expect(semDbFile.endsWith(expectedSemanticDbPath)) + } + } } diff --git a/modules/options/src/main/scala/scala/build/options/ScalaOptions.scala b/modules/options/src/main/scala/scala/build/options/ScalaOptions.scala index 756029f662..7c4d603250 100644 --- a/modules/options/src/main/scala/scala/build/options/ScalaOptions.scala +++ b/modules/options/src/main/scala/scala/build/options/ScalaOptions.scala @@ -10,6 +10,7 @@ final case class ScalaOptions( addScalaLibrary: Option[Boolean] = None, addScalaCompiler: Option[Boolean] = None, generateSemanticDbs: Option[Boolean] = None, + semanticDbTargetRoot: Option[os.Path] = None, scalacOptions: ShadowingSeq[Positioned[ScalacOpt]] = ShadowingSeq.empty, extraScalaVersions: Set[String] = Set.empty, compilerPlugins: Seq[Positioned[AnyDependency]] = Nil, diff --git a/website/docs/reference/cli-options.md b/website/docs/reference/cli-options.md index 75e53dbd66..6ea21edf20 100644 --- a/website/docs/reference/cli-options.md +++ b/website/docs/reference/cli-options.md @@ -1532,9 +1532,18 @@ Should include Scala CLI runner on the runtime ClassPath. Runner is added by def ### `--semantic-db` +Aliases: `--semanticdb` + [Internal] Generate SemanticDBs +### `--semantic-db-target-root` + +Aliases: `--semanticdb-target-root`, `--semanticdb-targetroot` + +[Internal] +Force SemanticDB target root (default follows the compiled classes destination directory) + ### `--strict-bloop-json-check` [Internal] diff --git a/website/docs/reference/scala-command/cli-options.md b/website/docs/reference/scala-command/cli-options.md index 25703ee488..7fba5c92f0 100644 --- a/website/docs/reference/scala-command/cli-options.md +++ b/website/docs/reference/scala-command/cli-options.md @@ -1028,10 +1028,20 @@ Should include Scala CLI runner on the runtime ClassPath. Runner is added by def ### `--semantic-db` +Aliases: `--semanticdb` + `SHOULD have` per Scala Runner specification Generate SemanticDBs +### `--semantic-db-target-root` + +Aliases: `--semanticdb-target-root`, `--semanticdb-targetroot` + +`SHOULD have` per Scala Runner specification + +Force SemanticDB target root (default follows the compiled classes destination directory) + ### `--strict-bloop-json-check` `IMPLEMENTATION specific` per Scala Runner specification diff --git a/website/docs/reference/scala-command/runner-specification.md b/website/docs/reference/scala-command/runner-specification.md index 425ff18e7c..46aac0baae 100644 --- a/website/docs/reference/scala-command/runner-specification.md +++ b/website/docs/reference/scala-command/runner-specification.md @@ -272,6 +272,14 @@ Specify platform Generate SemanticDBs +Aliases: `--semanticdb` + +**--semantic-db-target-root** + +Force SemanticDB target root (default follows the compiled classes destination directory) + +Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -1019,6 +1027,14 @@ Specify platform Generate SemanticDBs +Aliases: `--semanticdb` + +**--semantic-db-target-root** + +Force SemanticDB target root (default follows the compiled classes destination directory) + +Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` + **--default-scaladoc-options** Control if Scala CLI should use default options for scaladoc, true by default. Use `--default-scaladoc-opts:false` to not include default options. @@ -1570,6 +1586,14 @@ Specify platform Generate SemanticDBs +Aliases: `--semanticdb` + +**--semantic-db-target-root** + +Force SemanticDB target root (default follows the compiled classes destination directory) + +Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -2147,6 +2171,14 @@ Specify platform Generate SemanticDBs +Aliases: `--semanticdb` + +**--semantic-db-target-root** + +Force SemanticDB target root (default follows the compiled classes destination directory) + +Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -2743,6 +2775,14 @@ Specify platform Generate SemanticDBs +Aliases: `--semanticdb` + +**--semantic-db-target-root** + +Force SemanticDB target root (default follows the compiled classes destination directory) + +Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -3315,6 +3355,14 @@ Specify platform Generate SemanticDBs +Aliases: `--semanticdb` + +**--semantic-db-target-root** + +Force SemanticDB target root (default follows the compiled classes destination directory) + +Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` + **--check** Check if sources are well formatted @@ -3924,6 +3972,14 @@ Specify platform Generate SemanticDBs +Aliases: `--semanticdb` + +**--semantic-db-target-root** + +Force SemanticDB target root (default follows the compiled classes destination directory) + +Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -4584,6 +4640,14 @@ Specify platform Generate SemanticDBs +Aliases: `--semanticdb` + +**--semantic-db-target-root** + +Force SemanticDB target root (default follows the compiled classes destination directory) + +Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +
### Implementantation specific options @@ -5475,6 +5539,14 @@ Specify platform Generate SemanticDBs +Aliases: `--semanticdb` + +**--semantic-db-target-root** + +Force SemanticDB target root (default follows the compiled classes destination directory) + +Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +
### Implementantation specific options From 77be9f3a579a1129b19dce4e03b19708f6e2732c Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Thu, 18 Jan 2024 12:02:18 +0100 Subject: [PATCH 3/4] NIT extract SemanticDB-related options to separate files (both CLI & build options) --- .../src/main/scala/scala/build/Build.scala | 5 ++- .../scala/scala/build/tests/BuildTests.scala | 8 +++- .../scala/scala/cli/commands/bsp/Bsp.scala | 5 ++- .../commands/shared/SemanticDbOptions.scala | 27 +++++++++++++ .../cli/commands/shared/SharedOptions.scala | 20 +++------- .../scala/build/options/BuildOptions.scala | 4 +- .../scala/build/options/ScalaOptions.scala | 3 +- .../build/options/SemanticDbOptions.scala | 11 +++++ website/docs/reference/cli-options.md | 36 ++++++++++------- website/docs/reference/commands.md | 30 +++++++------- .../reference/scala-command/cli-options.md | 40 +++++++++++-------- .../docs/reference/scala-command/commands.md | 18 ++++----- .../scala-command/runner-specification.md | 18 ++++----- 13 files changed, 139 insertions(+), 86 deletions(-) create mode 100644 modules/cli/src/main/scala/scala/cli/commands/shared/SemanticDbOptions.scala create mode 100644 modules/options/src/main/scala/scala/build/options/SemanticDbOptions.scala diff --git a/modules/build/src/main/scala/scala/build/Build.scala b/modules/build/src/main/scala/scala/build/Build.scala index 52899c1a90..684a69147b 100644 --- a/modules/build/src/main/scala/scala/build/Build.scala +++ b/modules/build/src/main/scala/scala/build/Build.scala @@ -825,8 +825,9 @@ object Build { val classesDir0 = classesDir(inputs.workspace, inputs.projectName, scope) val scaladocDir = classesDir(inputs.workspace, inputs.projectName, scope, suffix = "-doc") - val generateSemanticDbs = options.scalaOptions.generateSemanticDbs.getOrElse(false) - val semanticDbTargetRoot = options.scalaOptions.semanticDbTargetRoot + val generateSemanticDbs = + options.scalaOptions.semanticDbOptions.generateSemanticDbs.getOrElse(false) + val semanticDbTargetRoot = options.scalaOptions.semanticDbOptions.semanticDbTargetRoot val releaseFlagVersion = releaseFlag(options, compilerJvmVersionOpt, logger).map(_.toString) diff --git a/modules/build/src/test/scala/scala/build/tests/BuildTests.scala b/modules/build/src/test/scala/scala/build/tests/BuildTests.scala index 2ac113f6d8..4847b26e80 100644 --- a/modules/build/src/test/scala/scala/build/tests/BuildTests.scala +++ b/modules/build/src/test/scala/scala/build/tests/BuildTests.scala @@ -180,7 +180,9 @@ abstract class BuildTests(server: Boolean) extends TestUtil.ScalaCliBuildSuite { val testInputs = TestInputs(os.rel / "simple.sc" -> scriptContents) val buildOptions = defaultOptions.copy( scalaOptions = defaultOptions.scalaOptions.copy( - generateSemanticDbs = Some(true) + semanticDbOptions = defaultOptions.scalaOptions.semanticDbOptions.copy( + generateSemanticDbs = Some(true) + ) ) ) testInputs.withBuild(buildOptions, buildThreads, bloopConfigOpt) { (_, _, maybeBuild) => @@ -227,7 +229,9 @@ abstract class BuildTests(server: Boolean) extends TestUtil.ScalaCliBuildSuite { ) val buildOptions = defaultScala3Options.copy( scalaOptions = defaultScala3Options.scalaOptions.copy( - generateSemanticDbs = Some(true) + semanticDbOptions = defaultScala3Options.scalaOptions.semanticDbOptions.copy( + generateSemanticDbs = Some(true) + ) ) ) testInputs.withBuild(buildOptions, buildThreads, bloopConfigOpt) { (_, _, maybeBuild) => diff --git a/modules/cli/src/main/scala/scala/cli/commands/bsp/Bsp.scala b/modules/cli/src/main/scala/scala/cli/commands/bsp/Bsp.scala index 4258ab801b..3b5322ec24 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/bsp/Bsp.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/bsp/Bsp.scala @@ -138,7 +138,10 @@ object Bsp extends ScalaCommand[BspOptions] { fetchSources = baseOptions.classPathOptions.fetchSources.orElse(Some(true)) ), scalaOptions = baseOptions.scalaOptions.copy( - generateSemanticDbs = baseOptions.scalaOptions.generateSemanticDbs.orElse(Some(true)) + semanticDbOptions = baseOptions.scalaOptions.semanticDbOptions.copy( + generateSemanticDbs = + baseOptions.scalaOptions.semanticDbOptions.generateSemanticDbs.orElse(Some(true)) + ) ), notForBloopOptions = baseOptions.notForBloopOptions.copy( addRunnerDependencyOpt = diff --git a/modules/cli/src/main/scala/scala/cli/commands/shared/SemanticDbOptions.scala b/modules/cli/src/main/scala/scala/cli/commands/shared/SemanticDbOptions.scala new file mode 100644 index 0000000000..bf26845db7 --- /dev/null +++ b/modules/cli/src/main/scala/scala/cli/commands/shared/SemanticDbOptions.scala @@ -0,0 +1,27 @@ +package scala.cli.commands.shared + +import caseapp.* +import com.github.plokhotnyuk.jsoniter_scala.core.* +import com.github.plokhotnyuk.jsoniter_scala.macros.* + +import scala.cli.commands.tags + +case class SemanticDbOptions( + @Hidden + @Tag(tags.should) + @HelpMessage("Generate SemanticDBs") + @Name("semanticdb") + semanticDb: Option[Boolean] = None, + @Hidden + @Tag(tags.should) + @HelpMessage("SemanticDB target root (default to the compiled classes destination directory)") + @Name("semanticdbTargetRoot") + @Name("semanticdbTargetroot") + semanticDbTargetRoot: Option[String] = None +) + +object SemanticDbOptions { + implicit lazy val parser: Parser[SemanticDbOptions] = Parser.derive + implicit lazy val help: Help[SemanticDbOptions] = Help.derive + implicit lazy val jsonCodec: JsonValueCodec[SemanticDbOptions] = JsonCodecMaker.make +} diff --git a/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala b/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala index f566465abb..0f14c1a335 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala @@ -187,18 +187,8 @@ final case class SharedOptions( @Hidden runner: Option[Boolean] = None, - @Hidden - @Tag(tags.should) - @HelpMessage("Generate SemanticDBs") - @Name("semanticdb") - semanticDb: Option[Boolean] = None, - - @Hidden - @Tag(tags.should) - @HelpMessage("Force SemanticDB target root (default follows the compiled classes destination directory)") - @Name("semanticdbTargetRoot") - @Name("semanticdbTargetroot") - semanticDbTargetRoot: Option[String] = None, + @Recurse + semanticDbOptions: SemanticDbOptions = SemanticDbOptions(), @Recurse input: SharedInputOptions = SharedInputOptions(), @@ -368,8 +358,10 @@ final case class SharedOptions( scalaBinaryVersion = scalaBinaryVersion.map(_.trim).filter(_.nonEmpty), addScalaLibrary = scalaLibrary.orElse(java.map(!_)), addScalaCompiler = withCompiler, - generateSemanticDbs = semanticDb, - semanticDbTargetRoot = semanticDbTargetRoot.map(os.Path(_, os.pwd)), + semanticDbOptions = bo.SemanticDbOptions( + generateSemanticDbs = semanticDbOptions.semanticDb, + semanticDbTargetRoot = semanticDbOptions.semanticDbTargetRoot.map(os.Path(_, os.pwd)) + ), scalacOptions = scalac .scalacOption .withScalacExtraOptions(scalacExtra) diff --git a/modules/options/src/main/scala/scala/build/options/BuildOptions.scala b/modules/options/src/main/scala/scala/build/options/BuildOptions.scala index 4013afebdd..8ef01d65d8 100644 --- a/modules/options/src/main/scala/scala/build/options/BuildOptions.scala +++ b/modules/options/src/main/scala/scala/build/options/BuildOptions.scala @@ -138,7 +138,7 @@ final case class BuildOptions( private def semanticDbPlugins(logger: Logger): Either[BuildException, Seq[AnyDependency]] = either { val scalaVersion: Option[String] = value(scalaParams).map(_.scalaVersion) - val generateSemDbs = scalaOptions.generateSemanticDbs.getOrElse(false) + val generateSemDbs = scalaOptions.semanticDbOptions.generateSemanticDbs.getOrElse(false) scalaVersion match { case Some(sv) if sv.startsWith("2.") && generateSemDbs => val semanticDbVersion = findSemanticDbVersion(sv, logger) @@ -194,7 +194,7 @@ final case class BuildOptions( } private def semanticDbJavacPlugins: Either[BuildException, Seq[AnyDependency]] = either { - val generateSemDbs = scalaOptions.generateSemanticDbs.getOrElse(false) + val generateSemDbs = scalaOptions.semanticDbOptions.generateSemanticDbs.getOrElse(false) if (generateSemDbs) Seq( dep"$semanticDbJavacPluginOrganization:$semanticDbJavacPluginModuleName:$semanticDbJavacPluginVersion" diff --git a/modules/options/src/main/scala/scala/build/options/ScalaOptions.scala b/modules/options/src/main/scala/scala/build/options/ScalaOptions.scala index 7c4d603250..9d312739de 100644 --- a/modules/options/src/main/scala/scala/build/options/ScalaOptions.scala +++ b/modules/options/src/main/scala/scala/build/options/ScalaOptions.scala @@ -9,8 +9,7 @@ final case class ScalaOptions( scalaBinaryVersion: Option[String] = None, addScalaLibrary: Option[Boolean] = None, addScalaCompiler: Option[Boolean] = None, - generateSemanticDbs: Option[Boolean] = None, - semanticDbTargetRoot: Option[os.Path] = None, + semanticDbOptions: SemanticDbOptions = SemanticDbOptions(), scalacOptions: ShadowingSeq[Positioned[ScalacOpt]] = ShadowingSeq.empty, extraScalaVersions: Set[String] = Set.empty, compilerPlugins: Seq[Positioned[AnyDependency]] = Nil, diff --git a/modules/options/src/main/scala/scala/build/options/SemanticDbOptions.scala b/modules/options/src/main/scala/scala/build/options/SemanticDbOptions.scala new file mode 100644 index 0000000000..e53e4572c8 --- /dev/null +++ b/modules/options/src/main/scala/scala/build/options/SemanticDbOptions.scala @@ -0,0 +1,11 @@ +package scala.build.options + +case class SemanticDbOptions( + generateSemanticDbs: Option[Boolean] = None, + semanticDbTargetRoot: Option[os.Path] = None +) + +object SemanticDbOptions { + implicit val hasHashData: HasHashData[SemanticDbOptions] = HasHashData.derive + implicit val monoid: ConfigMonoid[SemanticDbOptions] = ConfigMonoid.derive +} diff --git a/website/docs/reference/cli-options.md b/website/docs/reference/cli-options.md index 6ea21edf20..5003a62721 100644 --- a/website/docs/reference/cli-options.md +++ b/website/docs/reference/cli-options.md @@ -1530,20 +1530,6 @@ Do not add dependency to Scala Standard library. This is useful, when Scala CLI [Internal] Should include Scala CLI runner on the runtime ClassPath. Runner is added by default for application running on JVM using standard Scala versions. Runner is used to make stack traces more readable in case of application failure. -### `--semantic-db` - -Aliases: `--semanticdb` - -[Internal] -Generate SemanticDBs - -### `--semantic-db-target-root` - -Aliases: `--semanticdb-target-root`, `--semanticdb-targetroot` - -[Internal] -Force SemanticDB target root (default follows the compiled classes destination directory) - ### `--strict-bloop-json-check` [Internal] @@ -2159,6 +2145,28 @@ How many times to retry the staging repository operations on failure. [Internal] Time to wait between staging repository operation retries, in milliseconds. +### Semantic db options + +Available in commands: + +[`bsp`](./commands.md#bsp), [`compile`](./commands.md#compile), [`dependency-update`](./commands.md#dependency-update), [`doc`](./commands.md#doc), [`export`](./commands.md#export), [`fix`](./commands.md#fix), [`fmt` , `format` , `scalafmt`](./commands.md#fmt), [`package`](./commands.md#package), [`publish`](./commands.md#publish), [`publish local`](./commands.md#publish-local), [`repl` , `console`](./commands.md#repl), [`run`](./commands.md#run), [`setup-ide`](./commands.md#setup-ide), [`shebang`](./commands.md#shebang), [`test`](./commands.md#test) + + + +### `--semantic-db` + +Aliases: `--semanticdb` + +[Internal] +Generate SemanticDBs + +### `--semantic-db-target-root` + +Aliases: `--semanticdb-target-root`, `--semanticdb-targetroot` + +[Internal] +SemanticDB target root (default to the compiled classes destination directory) + ### Setup IDE options Available in commands: diff --git a/website/docs/reference/commands.md b/website/docs/reference/commands.md index d9fb69752b..84ca3165cf 100644 --- a/website/docs/reference/commands.md +++ b/website/docs/reference/commands.md @@ -32,7 +32,7 @@ All supported types of inputs can be mixed with each other. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/compile -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [compile](./cli-options.md#compile-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [compile](./cli-options.md#compile-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ## config @@ -79,7 +79,7 @@ Accepts option groups: [config](./cli-options.md#config-options), [coursier](./c Update dependency directives in the project -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [dependency update](./cli-options.md#dependency-update-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [dependency update](./cli-options.md#dependency-update-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ## doc @@ -93,7 +93,7 @@ All supported types of inputs can be mixed with each other. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/doc -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [doc](./cli-options.md#doc-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [doc](./cli-options.md#doc-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ## export @@ -115,7 +115,7 @@ The `export` sub-command is experimental. Please bear in mind that non-ideal user experience should be expected. If you encounter any bugs or have feedback to share, make sure to reach out to the maintenance team at https://github.com/VirtusLab/scala-cli -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [export](./cli-options.md#export-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [export](./cli-options.md#export-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ## fix @@ -137,7 +137,7 @@ The `fix` sub-command is experimental. Please bear in mind that non-ideal user experience should be expected. If you encounter any bugs or have feedback to share, make sure to reach out to the maintenance team at https://github.com/VirtusLab/scala-cli -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ## fmt @@ -154,7 +154,7 @@ All standard Scala CLI inputs are accepted, but only Scala sources will be forma For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/fmt -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [fmt](./cli-options.md#fmt-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [fmt](./cli-options.md#fmt-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ## help @@ -206,7 +206,7 @@ All supported types of inputs can be mixed with each other. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/repl -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [repl](./cli-options.md#repl-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [repl](./cli-options.md#repl-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ## package @@ -224,7 +224,7 @@ All supported types of inputs can be mixed with each other. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/package -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [package](./cli-options.md#package-options), [packager](./cli-options.md#packager-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [package](./cli-options.md#package-options), [packager](./cli-options.md#packager-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ## publish @@ -251,7 +251,7 @@ The `publish` sub-command is experimental. Please bear in mind that non-ideal user experience should be expected. If you encounter any bugs or have feedback to share, make sure to reach out to the maintenance team at https://github.com/VirtusLab/scala-cli -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [pgp scala signing](./cli-options.md#pgp-scala-signing-options), [power](./cli-options.md#power-options), [publish](./cli-options.md#publish-options), [publish connection](./cli-options.md#publish-connection-options), [publish params](./cli-options.md#publish-params-options), [publish repository](./cli-options.md#publish-repository-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [pgp scala signing](./cli-options.md#pgp-scala-signing-options), [power](./cli-options.md#power-options), [publish](./cli-options.md#publish-options), [publish connection](./cli-options.md#publish-connection-options), [publish params](./cli-options.md#publish-params-options), [publish repository](./cli-options.md#publish-repository-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ## publish local @@ -263,7 +263,7 @@ The `publish-local` sub-command is experimental. Please bear in mind that non-ideal user experience should be expected. If you encounter any bugs or have feedback to share, make sure to reach out to the maintenance team at https://github.com/VirtusLab/scala-cli -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [pgp scala signing](./cli-options.md#pgp-scala-signing-options), [power](./cli-options.md#power-options), [publish](./cli-options.md#publish-options), [publish params](./cli-options.md#publish-params-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [pgp scala signing](./cli-options.md#pgp-scala-signing-options), [power](./cli-options.md#power-options), [publish](./cli-options.md#publish-options), [publish params](./cli-options.md#publish-params-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ## publish setup @@ -301,7 +301,7 @@ To pass arguments to the actual application, just add them after `--`, like: For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/run -Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [run](./cli-options.md#run-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [run](./cli-options.md#run-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ## github secret create @@ -348,7 +348,7 @@ Using directives can be defined in all supported input source file types. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/setup-ide -Accepts option groups: [bsp file](./cli-options.md#bsp-file-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [setup IDE](./cli-options.md#setup-ide-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [bsp file](./cli-options.md#bsp-file-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [setup IDE](./cli-options.md#setup-ide-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ## shebang @@ -379,7 +379,7 @@ Using this, it is possible to conveniently set up Unix shebang scripts. For exam For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/shebang -Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [run](./cli-options.md#run-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [run](./cli-options.md#run-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ## test @@ -403,7 +403,7 @@ All supported types of inputs can be mixed with each other. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/test -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [test](./cli-options.md#test-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [test](./cli-options.md#test-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ## uninstall @@ -506,7 +506,7 @@ It is normally supposed to be invoked by your IDE when a Scala CLI project is im Detailed documentation can be found on our website: https://scala-cli.virtuslab.org -Accepts option groups: [bsp](./cli-options.md#bsp-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [bsp](./cli-options.md#bsp-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ### default-file diff --git a/website/docs/reference/scala-command/cli-options.md b/website/docs/reference/scala-command/cli-options.md index 7fba5c92f0..a6efb51ba3 100644 --- a/website/docs/reference/scala-command/cli-options.md +++ b/website/docs/reference/scala-command/cli-options.md @@ -1026,22 +1026,6 @@ Do not add dependency to Scala Standard library. This is useful, when Scala CLI Should include Scala CLI runner on the runtime ClassPath. Runner is added by default for application running on JVM using standard Scala versions. Runner is used to make stack traces more readable in case of application failure. -### `--semantic-db` - -Aliases: `--semanticdb` - -`SHOULD have` per Scala Runner specification - -Generate SemanticDBs - -### `--semantic-db-target-root` - -Aliases: `--semanticdb-target-root`, `--semanticdb-targetroot` - -`SHOULD have` per Scala Runner specification - -Force SemanticDB target root (default follows the compiled classes destination directory) - ### `--strict-bloop-json-check` `IMPLEMENTATION specific` per Scala Runner specification @@ -1483,6 +1467,30 @@ Available in commands: Don't actually run the REPL, just fetch it +### Semantic db options + +Available in commands: + +[`bsp`](./commands.md#bsp), [`compile`](./commands.md#compile), [`doc`](./commands.md#doc), [`fmt` , `format` , `scalafmt`](./commands.md#fmt), [`repl` , `console`](./commands.md#repl), [`run`](./commands.md#run), [`setup-ide`](./commands.md#setup-ide), [`shebang`](./commands.md#shebang), [`test`](./commands.md#test) + + + +### `--semantic-db` + +Aliases: `--semanticdb` + +`SHOULD have` per Scala Runner specification + +Generate SemanticDBs + +### `--semantic-db-target-root` + +Aliases: `--semanticdb-target-root`, `--semanticdb-targetroot` + +`SHOULD have` per Scala Runner specification + +SemanticDB target root (default to the compiled classes destination directory) + ### Setup IDE options Available in commands: diff --git a/website/docs/reference/scala-command/commands.md b/website/docs/reference/scala-command/commands.md index 1a11c51541..102d412df2 100644 --- a/website/docs/reference/scala-command/commands.md +++ b/website/docs/reference/scala-command/commands.md @@ -31,7 +31,7 @@ All supported types of inputs can be mixed with each other. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/compile -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [compile](./cli-options.md#compile-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [compile](./cli-options.md#compile-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ### config @@ -86,7 +86,7 @@ All supported types of inputs can be mixed with each other. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/doc -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [doc](./cli-options.md#doc-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [doc](./cli-options.md#doc-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ### repl @@ -108,7 +108,7 @@ All supported types of inputs can be mixed with each other. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/repl -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [repl](./cli-options.md#repl-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [repl](./cli-options.md#repl-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ### run @@ -134,7 +134,7 @@ To pass arguments to the actual application, just add them after `--`, like: For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/run -Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [run](./cli-options.md#run-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [run](./cli-options.md#run-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ### shebang @@ -165,7 +165,7 @@ Using this, it is possible to conveniently set up Unix shebang scripts. For exam For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/shebang -Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [run](./cli-options.md#run-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [run](./cli-options.md#run-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ## SHOULD have commands: @@ -184,7 +184,7 @@ All standard Scala CLI inputs are accepted, but only Scala sources will be forma For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/fmt -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [fmt](./cli-options.md#fmt-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [fmt](./cli-options.md#fmt-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ### test @@ -208,7 +208,7 @@ All supported types of inputs can be mixed with each other. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/test -Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [test](./cli-options.md#test-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [cross](./cli-options.md#cross-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [java](./cli-options.md#java-options), [java prop](./cli-options.md#java-prop-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [test](./cli-options.md#test-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [watch](./cli-options.md#watch-options), [workspace](./cli-options.md#workspace-options) ### version @@ -240,7 +240,7 @@ It is normally supposed to be invoked by your IDE when a Scala CLI project is im Detailed documentation can be found on our website: https://scala-cli.virtuslab.org -Accepts option groups: [bsp](./cli-options.md#bsp-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [bsp](./cli-options.md#bsp-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ### clean @@ -292,7 +292,7 @@ Using directives can be defined in all supported input source file types. For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/setup-ide -Accepts option groups: [bsp file](./cli-options.md#bsp-file-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [setup IDE](./cli-options.md#setup-ide-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) +Accepts option groups: [bsp file](./cli-options.md#bsp-file-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [setup IDE](./cli-options.md#setup-ide-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options) ### uninstall diff --git a/website/docs/reference/scala-command/runner-specification.md b/website/docs/reference/scala-command/runner-specification.md index 46aac0baae..f171c959bb 100644 --- a/website/docs/reference/scala-command/runner-specification.md +++ b/website/docs/reference/scala-command/runner-specification.md @@ -276,7 +276,7 @@ Aliases: `--semanticdb` **--semantic-db-target-root** -Force SemanticDB target root (default follows the compiled classes destination directory) +SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` @@ -1031,7 +1031,7 @@ Aliases: `--semanticdb` **--semantic-db-target-root** -Force SemanticDB target root (default follows the compiled classes destination directory) +SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` @@ -1590,7 +1590,7 @@ Aliases: `--semanticdb` **--semantic-db-target-root** -Force SemanticDB target root (default follows the compiled classes destination directory) +SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` @@ -2175,7 +2175,7 @@ Aliases: `--semanticdb` **--semantic-db-target-root** -Force SemanticDB target root (default follows the compiled classes destination directory) +SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` @@ -2779,7 +2779,7 @@ Aliases: `--semanticdb` **--semantic-db-target-root** -Force SemanticDB target root (default follows the compiled classes destination directory) +SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` @@ -3359,7 +3359,7 @@ Aliases: `--semanticdb` **--semantic-db-target-root** -Force SemanticDB target root (default follows the compiled classes destination directory) +SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` @@ -3976,7 +3976,7 @@ Aliases: `--semanticdb` **--semantic-db-target-root** -Force SemanticDB target root (default follows the compiled classes destination directory) +SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` @@ -4644,7 +4644,7 @@ Aliases: `--semanticdb` **--semantic-db-target-root** -Force SemanticDB target root (default follows the compiled classes destination directory) +SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` @@ -5543,7 +5543,7 @@ Aliases: `--semanticdb` **--semantic-db-target-root** -Force SemanticDB target root (default follows the compiled classes destination directory) +SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` From 93368623cae2965d93a488cf39bd48869c2bdfca Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Fri, 19 Jan 2024 11:46:22 +0100 Subject: [PATCH 4/4] Add a Scala/Java version agnostic option for setting the SemanticDB source root directory --- .../src/main/scala/scala/build/Build.scala | 9 +- .../commands/shared/SemanticDbOptions.scala | 8 +- .../cli/commands/shared/SharedOptions.scala | 3 +- .../SemanticDbTestDefinitions.scala | 213 +++++++++++------- .../build/options/SemanticDbOptions.scala | 3 +- website/docs/reference/cli-options.md | 7 + .../reference/scala-command/cli-options.md | 8 + .../scala-command/runner-specification.md | 54 +++++ 8 files changed, 215 insertions(+), 90 deletions(-) diff --git a/modules/build/src/main/scala/scala/build/Build.scala b/modules/build/src/main/scala/scala/build/Build.scala index 684a69147b..f27eac208b 100644 --- a/modules/build/src/main/scala/scala/build/Build.scala +++ b/modules/build/src/main/scala/scala/build/Build.scala @@ -828,6 +828,8 @@ object Build { val generateSemanticDbs = options.scalaOptions.semanticDbOptions.generateSemanticDbs.getOrElse(false) val semanticDbTargetRoot = options.scalaOptions.semanticDbOptions.semanticDbTargetRoot + val semanticDbSourceRoot = + options.scalaOptions.semanticDbOptions.semanticDbSourceRoot.getOrElse(inputs.workspace) val releaseFlagVersion = releaseFlag(options, compilerJvmVersionOpt, logger).map(_.toString) @@ -859,9 +861,9 @@ object Build { "-Yrangepos", "-P:semanticdb:failures:warning", "-P:semanticdb:synthetics:on", - s"-P:semanticdb:sourceroot:${inputs.workspace}" + s"-P:semanticdb:sourceroot:$semanticDbSourceRoot" ) - else Seq("-Xsemanticdb", "-sourceroot", inputs.workspace.toString) + else Seq("-Xsemanticdb", "-sourceroot", semanticDbSourceRoot.toString) ).map(ScalacOpt(_)) else Nil @@ -928,9 +930,10 @@ object Build { Seq("-J--add-exports", s"-Jjdk.compiler/$pkg=ALL-UNNAMED") } + val javacTargetRoot = semanticDbTargetRoot.getOrElse("javac-classes-directory") Seq( // does the path need to be escaped somehow? - s"-Xplugin:semanticdb -sourceroot:${inputs.workspace} -targetroot:${semanticDbTargetRoot.getOrElse("javac-classes-directory")}" + s"-Xplugin:semanticdb -sourceroot:$semanticDbSourceRoot -targetroot:$javacTargetRoot" ) ++ exports } else diff --git a/modules/cli/src/main/scala/scala/cli/commands/shared/SemanticDbOptions.scala b/modules/cli/src/main/scala/scala/cli/commands/shared/SemanticDbOptions.scala index bf26845db7..77075a02a0 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/shared/SemanticDbOptions.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/shared/SemanticDbOptions.scala @@ -17,7 +17,13 @@ case class SemanticDbOptions( @HelpMessage("SemanticDB target root (default to the compiled classes destination directory)") @Name("semanticdbTargetRoot") @Name("semanticdbTargetroot") - semanticDbTargetRoot: Option[String] = None + semanticDbTargetRoot: Option[String] = None, + @Hidden + @Tag(tags.should) + @HelpMessage("SemanticDB source root (default to the project root directory)") + @Name("semanticdbSourceRoot") + @Name("semanticdbSourceroot") + semanticDbSourceRoot: Option[String] = None ) object SemanticDbOptions { diff --git a/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala b/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala index 0f14c1a335..ab319af5fb 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala @@ -360,7 +360,8 @@ final case class SharedOptions( addScalaCompiler = withCompiler, semanticDbOptions = bo.SemanticDbOptions( generateSemanticDbs = semanticDbOptions.semanticDb, - semanticDbTargetRoot = semanticDbOptions.semanticDbTargetRoot.map(os.Path(_, os.pwd)) + semanticDbTargetRoot = semanticDbOptions.semanticDbTargetRoot.map(os.Path(_, os.pwd)), + semanticDbSourceRoot = semanticDbOptions.semanticDbSourceRoot.map(os.Path(_, os.pwd)) ), scalacOptions = scalac .scalacOption diff --git a/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala index 6cf895ba83..15db772502 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/SemanticDbTestDefinitions.scala @@ -3,104 +3,149 @@ package scala.cli.integration import com.eed3si9n.expecty.Expecty.expect trait SemanticDbTestDefinitions { _: CompileTestDefinitions => + def javaHelloWorld(packageName: String, mainClassName: String): String = + s"""package $packageName; + | + |public class $mainClassName { + | public static void main(String[] args) { + | System.err.println("Hello"); + | } + |} + |""".stripMargin + + def scalaHelloWorld(packageName: String, mainClassName: String): String = + s"""package $packageName + | + |object $mainClassName { + | def main(args: Array[String]): Unit = { + | println("Hello") + | } + |} + |""".stripMargin + test("Java SemanticDB (manual)") { - val inputs = TestInputs( - os.rel / "foo" / "Test.java" -> - """package foo; - | - |public class Test { - | public static void main(String[] args) { - | System.err.println("Hello"); - | } - |} - |""".stripMargin - ) - inputs.fromRoot { root => - val compilerPackages = Seq( - "com.sun.tools.javac.api", - "com.sun.tools.javac.code", - "com.sun.tools.javac.model", - "com.sun.tools.javac.tree", - "com.sun.tools.javac.util" - ) - val exports = compilerPackages - .flatMap { pkg => - Seq("-J--add-exports", s"-Jjdk.compiler/$pkg=ALL-UNNAMED") - } - .flatMap(opt => List("--javac-opt", opt)) - val javaSemDbOptions = Seq( - "--javac-plugin", - "com.sourcegraph:semanticdb-javac:0.7.4", - "--javac-opt", - s"-Xplugin:semanticdb -sourceroot:$root -targetroot:javac-classes-directory" - ) ++ exports - os.proc(TestUtil.cli, "compile", extraOptions, javaSemDbOptions, ".") - .call(cwd = root) + TestInputs(os.rel / "foo" / "Test.java" -> javaHelloWorld("foo", "Test")) + .fromRoot { root => + val compilerPackages = Seq( + "com.sun.tools.javac.api", + "com.sun.tools.javac.code", + "com.sun.tools.javac.model", + "com.sun.tools.javac.tree", + "com.sun.tools.javac.util" + ) + val exports = compilerPackages + .flatMap { pkg => + Seq("-J--add-exports", s"-Jjdk.compiler/$pkg=ALL-UNNAMED") + } + .flatMap(opt => List("--javac-opt", opt)) + val javaSemDbOptions = Seq( + "--javac-plugin", + "com.sourcegraph:semanticdb-javac:0.7.4", + "--javac-opt", + s"-Xplugin:semanticdb -sourceroot:$root -targetroot:javac-classes-directory" + ) ++ exports + os.proc(TestUtil.cli, "compile", extraOptions, javaSemDbOptions, ".") + .call(cwd = root) - val files = os.walk(root / Constants.workspaceDirName) - val semDbFiles = files - .filter(_.last.endsWith(".semanticdb")) - .filter(!_.segments.exists(_ == "bloop-internal-classes")) - expect(semDbFiles.length == 1) - val semDbFile = semDbFiles.head - expect( - semDbFile.endsWith(os.rel / "META-INF" / "semanticdb" / "foo" / "Test.java.semanticdb") - ) - } + val files = os.walk(root / Constants.workspaceDirName) + val semDbFiles = files + .filter(_.last.endsWith(".semanticdb")) + .filter(!_.segments.exists(_ == "bloop-internal-classes")) + expect(semDbFiles.length == 1) + val semDbFile = semDbFiles.head + expect( + semDbFile.endsWith(os.rel / "META-INF" / "semanticdb" / "foo" / "Test.java.semanticdb") + ) + } } for { - language <- Seq("Java", "Scala") - sourceFileName = if (language == "Java") "Test.java" else "Test.scala" - inputs = - if (language == "Java") - TestInputs( - os.rel / "foo" / sourceFileName -> - """package foo; - | - |public class Test { - | public static void main(String[] args) { - | System.err.println("Hello"); - | } - |} - |""".stripMargin - ) - else - TestInputs( - os.rel / "foo" / sourceFileName -> - """package foo; - | - |object Test { - | def main(args: Array[String]): Unit = { - | println("Hello") - | } - |} - |""".stripMargin - ) + language <- Seq("Java", "Scala") semanticDbTargetDir <- Seq(None, Some("semanticdb-target")) - targetDirString = semanticDbTargetDir.map(_ => "with forced target root").getOrElse("") - } - test(s"$language SemanticDB $targetDirString") { - inputs.fromRoot { root => + } { + test( + s"$language SemanticDB${semanticDbTargetDir.map(_ => " with forced target root").getOrElse("")}" + ) { + val sourceFileName = if (language == "Java") "Test.java" else "Test.scala" + (if (language == "Java") + TestInputs(os.rel / "foo" / sourceFileName -> javaHelloWorld("foo", "Test")) + else + TestInputs(os.rel / "foo" / sourceFileName -> scalaHelloWorld("foo", "Test"))).fromRoot { + root => + val targetDirOptions = + semanticDbTargetDir match { + case Some(targetDir) => Seq("--semantic-db-target-root", targetDir) + case None => Nil + } + os.proc(TestUtil.cli, "compile", extraOptions, "--semantic-db", ".", targetDirOptions) + .call(cwd = root) + val files = os.walk(root) + val semDbFiles = files + .filter(_.last.endsWith(".semanticdb")) + .filter(!_.segments.exists(_ == "bloop-internal-classes")) + expect(semDbFiles.length == 1) + val semDbFile = semDbFiles.head + val expectedSemanticDbPath = + if (semanticDbTargetDir.isDefined) + os.rel / semanticDbTargetDir.get / "META-INF" / "semanticdb" / "foo" / s"$sourceFileName.semanticdb" + else + os.rel / "META-INF" / "semanticdb" / "foo" / s"$sourceFileName.semanticdb" + expect(semDbFile.endsWith(expectedSemanticDbPath)) + } + } + + test( + s"$language SemanticDB with spread source dirs, forced source root ${semanticDbTargetDir.map(_ => "and target root").getOrElse("")}" + ) { + val (className1, className2) = s"Test1$language" -> s"Test2$language" + val (sourceFileName1, sourceFileName2) = + if (language == "Java") s"$className1.java" -> s"$className2.java" + else s"$className1.scala" -> s"$className2.scala" + val (package1, package2) = "foo" -> "bar" + val (sourceDir1, sourceDir2) = (os.rel / "sources1") -> (os.rel / "sources2") + val (code1, code2) = + if (language == "Java") + javaHelloWorld(package1, className1) -> javaHelloWorld(package2, className2) + else scalaHelloWorld(package1, className1) -> scalaHelloWorld(package2, className2) + TestInputs( + os.rel / sourceDir1 / package1 / sourceFileName1 -> code1, + os.rel / sourceDir2 / package2 / sourceFileName2 -> code2 + ).fromRoot { (root: os.Path) => val targetDirOptions = semanticDbTargetDir match { - case Some(targetDir) => Seq("--semantic-db-target-root", targetDir) + case Some(targetDir) => Seq("--semanticdb-targetroot", targetDir) case None => Nil } - os.proc(TestUtil.cli, "compile", extraOptions, "--semantic-db", ".", targetDirOptions) + val semanticDbOptions: Seq[String] = + targetDirOptions ++ Seq("--semanticdb", "--semanticdb-sourceroot", root.toString) + os.proc( + TestUtil.cli, + "compile", + extraOptions, + semanticDbOptions, + sourceDir1, + sourceDir2 + ) .call(cwd = root) - val files = os.walk(root) + val files = os.walk(semanticDbTargetDir.map(root / _) + .getOrElse(root / sourceDir1 / Constants.workspaceDirName)) val semDbFiles = files .filter(_.last.endsWith(".semanticdb")) .filter(!_.segments.exists(_ == "bloop-internal-classes")) - expect(semDbFiles.length == 1) - val semDbFile = semDbFiles.head - val expectedSemanticDbPath = - if (semanticDbTargetDir.isDefined) - os.rel / semanticDbTargetDir.get / "META-INF" / "semanticdb" / "foo" / s"$sourceFileName.semanticdb" - else - os.rel / "META-INF" / "semanticdb" / "foo" / s"$sourceFileName.semanticdb" - expect(semDbFile.endsWith(expectedSemanticDbPath)) + expect(semDbFiles.length == 2) + val semDbFile1 = semDbFiles.find(_.last == s"$sourceFileName1.semanticdb").get + expect( + semDbFile1.endsWith( + os.rel / "META-INF" / "semanticdb" / sourceDir1 / package1 / s"$sourceFileName1.semanticdb" + ) + ) + val semDbFile2 = semDbFiles.find(_.last == s"$sourceFileName2.semanticdb").get + expect( + semDbFile2.endsWith( + os.rel / "META-INF" / "semanticdb" / sourceDir2 / package2 / s"$sourceFileName2.semanticdb" + ) + ) } } + } } diff --git a/modules/options/src/main/scala/scala/build/options/SemanticDbOptions.scala b/modules/options/src/main/scala/scala/build/options/SemanticDbOptions.scala index e53e4572c8..58b5ce9a50 100644 --- a/modules/options/src/main/scala/scala/build/options/SemanticDbOptions.scala +++ b/modules/options/src/main/scala/scala/build/options/SemanticDbOptions.scala @@ -2,7 +2,8 @@ package scala.build.options case class SemanticDbOptions( generateSemanticDbs: Option[Boolean] = None, - semanticDbTargetRoot: Option[os.Path] = None + semanticDbTargetRoot: Option[os.Path] = None, + semanticDbSourceRoot: Option[os.Path] = None ) object SemanticDbOptions { diff --git a/website/docs/reference/cli-options.md b/website/docs/reference/cli-options.md index 5003a62721..cda378b53a 100644 --- a/website/docs/reference/cli-options.md +++ b/website/docs/reference/cli-options.md @@ -2167,6 +2167,13 @@ Aliases: `--semanticdb-target-root`, `--semanticdb-targetroot` [Internal] SemanticDB target root (default to the compiled classes destination directory) +### `--semantic-db-source-root` + +Aliases: `--semanticdb-source-root`, `--semanticdb-sourceroot` + +[Internal] +SemanticDB source root (default to the project root directory) + ### Setup IDE options Available in commands: diff --git a/website/docs/reference/scala-command/cli-options.md b/website/docs/reference/scala-command/cli-options.md index a6efb51ba3..1aec20331f 100644 --- a/website/docs/reference/scala-command/cli-options.md +++ b/website/docs/reference/scala-command/cli-options.md @@ -1491,6 +1491,14 @@ Aliases: `--semanticdb-target-root`, `--semanticdb-targetroot` SemanticDB target root (default to the compiled classes destination directory) +### `--semantic-db-source-root` + +Aliases: `--semanticdb-source-root`, `--semanticdb-sourceroot` + +`SHOULD have` per Scala Runner specification + +SemanticDB source root (default to the project root directory) + ### Setup IDE options Available in commands: diff --git a/website/docs/reference/scala-command/runner-specification.md b/website/docs/reference/scala-command/runner-specification.md index f171c959bb..db80bcb1a5 100644 --- a/website/docs/reference/scala-command/runner-specification.md +++ b/website/docs/reference/scala-command/runner-specification.md @@ -280,6 +280,12 @@ SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +**--semantic-db-source-root** + +SemanticDB source root (default to the project root directory) + +Aliases: `--semanticdb-source-root` ,`--semanticdb-sourceroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -1035,6 +1041,12 @@ SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +**--semantic-db-source-root** + +SemanticDB source root (default to the project root directory) + +Aliases: `--semanticdb-source-root` ,`--semanticdb-sourceroot` + **--default-scaladoc-options** Control if Scala CLI should use default options for scaladoc, true by default. Use `--default-scaladoc-opts:false` to not include default options. @@ -1594,6 +1606,12 @@ SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +**--semantic-db-source-root** + +SemanticDB source root (default to the project root directory) + +Aliases: `--semanticdb-source-root` ,`--semanticdb-sourceroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -2179,6 +2197,12 @@ SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +**--semantic-db-source-root** + +SemanticDB source root (default to the project root directory) + +Aliases: `--semanticdb-source-root` ,`--semanticdb-sourceroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -2783,6 +2807,12 @@ SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +**--semantic-db-source-root** + +SemanticDB source root (default to the project root directory) + +Aliases: `--semanticdb-source-root` ,`--semanticdb-sourceroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -3363,6 +3393,12 @@ SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +**--semantic-db-source-root** + +SemanticDB source root (default to the project root directory) + +Aliases: `--semanticdb-source-root` ,`--semanticdb-sourceroot` + **--check** Check if sources are well formatted @@ -3980,6 +4016,12 @@ SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +**--semantic-db-source-root** + +SemanticDB source root (default to the project root directory) + +Aliases: `--semanticdb-source-root` ,`--semanticdb-sourceroot` + **--watch** Run the application in the background, automatically wake the thread and re-run if sources have been changed @@ -4648,6 +4690,12 @@ SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +**--semantic-db-source-root** + +SemanticDB source root (default to the project root directory) + +Aliases: `--semanticdb-source-root` ,`--semanticdb-sourceroot` +
### Implementantation specific options @@ -5547,6 +5595,12 @@ SemanticDB target root (default to the compiled classes destination directory) Aliases: `--semanticdb-target-root` ,`--semanticdb-targetroot` +**--semantic-db-source-root** + +SemanticDB source root (default to the project root directory) + +Aliases: `--semanticdb-source-root` ,`--semanticdb-sourceroot` +
### Implementantation specific options