diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ca1c91..a2852d1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,7 +45,7 @@ jobs: - uses: sbt/setup-sbt@v1 - run: sbt -v test - run: | - sbt -v publishLocal "project plugin" "^ scripted" && + sbt -v publishLocal plugin2_12/scripted plugin3/scripted && java -jar ./target/scala-2.11/proguard/conscript-*.jar --version push_gh_pages: needs: [test, setup_script_unix, setup_script_windows] diff --git a/build.sbt b/build.sbt index 10f5b06..aabbec7 100644 --- a/build.sbt +++ b/build.sbt @@ -29,7 +29,6 @@ lazy val commonSettings = Seq( Seq("-language:_", "-Xlint", "-Xfuture") } }, - crossSbtVersions := Seq("1.2.8") ) lazy val root = (project in file(".")). @@ -86,12 +85,12 @@ lazy val root = (project in file(".")). inquireVersions, runClean, runTest, - releaseStepCommandAndRemaining(s"^ plugin/scripted"), + releaseStepCommandAndRemaining(s"plugin2_12/scripted ; plugin3/scripted "), setReleaseVersion, releaseStepTask(updateLaunchconfig), commitReleaseVersion, tagRelease, - releaseStepCommandAndRemaining(s";publishSigned;^ plugin/publishSigned"), + releaseStepCommandAndRemaining(s";publishSigned; plugin2_12/publishSigned; plugin3/publishSigned"), releaseStepCommandAndRemaining("sonaRelease"), setNextVersion, commitNextVersion, @@ -170,10 +169,19 @@ lazy val javaVmArgs: List[String] = { java.lang.management.ManagementFactory.getRuntimeMXBean.getInputArguments.asScala.toList } -lazy val plugin = (project in file("sbt-conscript")). - enablePlugins(SbtPlugin). - settings( +lazy val plugin = (projectMatrix in file("sbt-conscript")) + .jvmPlatform(scalaVersions = Seq("3.7.2", "2.12.20")) + .enablePlugins(SbtPlugin) + .settings( commonSettings, + pluginCrossBuild / sbtVersion := { + scalaBinaryVersion.value match { + case "2.12" => + "1.2.8" + case _ => + "2.0.0-RC3" + } + }, buildInfo(packageName = "sbtconscript", v = Dependencies.launcherInterface.revision), name := "sbt-conscript", scriptedBufferLog := false, diff --git a/project/plugins.sbt b/project/plugins.sbt index 4636b51..cccaf0b 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,4 @@ +addSbtPlugin("com.eed3si9n" % "sbt-projectmatrix" % "0.11.0") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.3.1") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.13.1") diff --git a/sbt-conscript/src/main/scala-2/ConscriptPluginCompat.scala b/sbt-conscript/src/main/scala-2/ConscriptPluginCompat.scala new file mode 100644 index 0000000..179a1c3 --- /dev/null +++ b/sbt-conscript/src/main/scala-2/ConscriptPluginCompat.scala @@ -0,0 +1,9 @@ +package sbtconscript + +import java.io.File +import java.net.URL + +private[sbtconscript] object ConscriptPluginCompat { + def toURL(u: URL): URL = u + def toClasspath(f: File): File = f +} diff --git a/sbt-conscript/src/main/scala-3/ConscriptPluginCompat.scala b/sbt-conscript/src/main/scala-3/ConscriptPluginCompat.scala new file mode 100644 index 0000000..55ea925 --- /dev/null +++ b/sbt-conscript/src/main/scala-3/ConscriptPluginCompat.scala @@ -0,0 +1,11 @@ +package sbtconscript + +import java.io.File +import java.net.URL +import java.net.URI +import java.nio.file.Path + +private[sbtconscript] object ConscriptPluginCompat { + def toURL(u: URI): URL = u.toURL + def toClasspath(f: File): Path = f.toPath +} diff --git a/sbt-conscript/src/main/scala/ConscriptPlugin.scala b/sbt-conscript/src/main/scala/ConscriptPlugin.scala index 102e81a..034ce03 100644 --- a/sbt-conscript/src/main/scala/ConscriptPlugin.scala +++ b/sbt-conscript/src/main/scala/ConscriptPlugin.scala @@ -8,6 +8,7 @@ object ConscriptPlugin extends AutoPlugin { override lazy val requires = plugins.JvmPlugin object autoImport { lazy val csBoot = settingKey[File]("Boot directory used by csRun") + @transient lazy val csWrite = taskKey[Unit]("Write test launchconfig files to conscript-output") lazy val csRun = inputKey[Unit]("Run a named launchconfig, with parameters") lazy val csSbtLauncherVersion = settingKey[String]("sbt launcher version") @@ -64,14 +65,14 @@ object ConscriptPlugin extends AutoPlugin { val launcherFile = conscriptHome / launcher if(!launcherFile.exists) { val u = url(s"https://repo1.maven.org/maven2/org/scala-sbt/launcher/$launcherVersion/launcher-$launcherVersion.jar") - sbt.io.Using.urlInputStream(u) { inputStream => + sbt.io.Using.urlInputStream(ConscriptPluginCompat.toURL(u)) { inputStream => IO.transfer(inputStream, launcherFile) } } val f = new sbt.ForkRun(ForkOptions()) f.run( mainClass = "xsbt.boot.Boot", - classpath = launcherFile :: Nil, + classpath = ConscriptPluginCompat.toClasspath(launcherFile) :: Nil, options = ("@" + config.toString) :: args.toList.tail, log = streams.value.log )