shanedell commented on code in PR #1452:
URL: https://github.com/apache/daffodil-vscode/pull/1452#discussion_r2414215648


##########
build.sbt:
##########
@@ -221,3 +183,122 @@ lazy val xjcSettings =
       cachedFun(Set(daffodilLibJar)).toSeq
     }
   )
+
+lazy val `daffodil-debugger` = project
+  .in(file("."))
+  .settings(commonSettings, ratSettings)
+  .settings(publish / skip := true)
+  .aggregate(debuggers.projectRefs: _*)
+
+/** Since using projectMatrix, there will be a debugger, debugger2_12 and 
debugger3 target. The debugger target is for
+  * Daffodil 3.11.0 and Scala 2.13. The debugger2_12 target is for Daffodil 
3.10.0 and Scala 2.12. The debugger3 target
+  * is for Daffodil 4.0.0 and Scala 3. (only availabe when using JDK 17+)
+  *
+  * When running something like "sbt test" that will run all targets. To use a 
single target do one of: sbt
+  * debugger/test OR sbt debugger2_12/test OR sbt debugger3/test. Based on 
which version of the debugger you are
+  * targeting.
+  */
+lazy val debuggers = {
+  val debugger = (projectMatrix in (file("debugger")))
+    .enablePlugins(BuildInfoPlugin, JavaAppPackaging, UniversalPlugin, 
ClasspathJarPlugin, SbtXjcPlugin)
+    .settings(commonSettings)
+    .settings(xjcSettings)
+    .settings(
+      name := "daffodil-debugger",
+      scalacOptions ++= buildScalacOptions(scalaVersion.value),
+      javacOptions ++= buildJavacOptions(scalaVersion.value),
+      libraryDependencies ++= Seq(
+        /* NOTE: To support Java 8:
+         *  logback-classic can not go above version 1.2.11.
+         *  com.microsoft.java.debug.core can not go above version 0.34.0.
+         *  jansi can not go above version 1.18.
+         */
+        // scala-steward:off
+        "ch.qos.logback" % "logback-classic" % "1.2.11",
+        "com.microsoft.java" % "com.microsoft.java.debug.core" % "0.34.0",
+        "org.fusesource.jansi" % "jansi" % "1.18",
+        // scala-steward:on
+        "co.fs2" %% "fs2-io" % "3.12.0",
+        "com.monovore" %% "decline-effect" % "2.5.0",
+        "org.typelevel" %% "log4cats-slf4j" % "2.7.1",
+        "org.scalameta" %% "munit" % "1.1.1" % Test
+      ),
+      buildInfoPackage := "org.apache.daffodil.debugger.dap",
+      buildInfoKeys := Seq[BuildInfoKey](
+        name,
+        version,
+        scalaVersion,
+        sbtVersion,
+        "daffodilVersion" -> getDaffodilVersion(scalaVersion.value)
+      ),
+      packageName := s"${name.value}-${getDaffodilVersion(scalaVersion.value)}"
+    )
+    .jvmPlatform(
+      scalaVersions = Seq("2.12.20"),
+      settings = Seq(
+        libraryDependencies ++= 
getPlatformSpecificLibraries(scalaVersion.value)
+      )
+    )
+    .jvmPlatform(
+      scalaVersions = Seq("2.13.16"),
+      settings = Seq(
+        libraryDependencies ++= 
getPlatformSpecificLibraries(scalaVersion.value)
+      )
+    )
+
+  if (scala.util.Properties.isJavaAtLeast("17"))
+    debugger.jvmPlatform(
+      scalaVersions = Seq("3.3.6"),
+      settings = Seq(
+        libraryDependencies ++= 
getPlatformSpecificLibraries(scalaVersion.value)
+      )
+    )
+  else debugger
+}
+
+def getPlatformSpecificLibraries(scalaVersion: String) = {
+  val daffodilVersion = getDaffodilVersion(scalaVersion)
+
+  if (scalaVersion.startsWith("3"))
+    Seq("org.apache.daffodil" %% "daffodil-core" % daffodilVersion)
+  else
+    Seq(
+      "org.apache.daffodil" %% "daffodil-sapi" % daffodilVersion,
+      "org.apache.daffodil" %% "daffodil-runtime1" % daffodilVersion,
+      "org.apache.daffodil" %% "daffodil-lib" % daffodilVersion % Test
+    )

Review Comment:
   How would this work exactly? I am confused on how the scala code compiles 
and functions properly if these aren't marked as provided dependencies. I 
understand downloading the Daffodil CLI to use the JARs it has with it but I am 
a little stuck on what needs changed along side removing these dependencies  
that would make it so the debugger doesn't break. Does that make sense?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to