diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fcbe849..1906291 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,12 +24,7 @@ jobs: matrix: os: [ubuntu-latest] scala: [3.3.8] - java: - - temurin@8 - - temurin@11 - - temurin@17 - - temurin@21 - - temurin@25 + java: [temurin@17, temurin@21, temurin@25] runs-on: ${{ matrix.os }} steps: - name: Checkout current branch (full) @@ -37,22 +32,6 @@ jobs: with: fetch-depth: 0 - - name: Setup Java (temurin@8) - if: matrix.java == 'temurin@8' - uses: actions/setup-java@v5 - with: - distribution: temurin - java-version: 8 - cache: sbt - - - name: Setup Java (temurin@11) - if: matrix.java == 'temurin@11' - uses: actions/setup-java@v5 - with: - distribution: temurin - java-version: 11 - cache: sbt - - name: Setup Java (temurin@17) if: matrix.java == 'temurin@17' uses: actions/setup-java@v5 @@ -81,7 +60,7 @@ jobs: uses: sbt/setup-sbt@v1 - name: Check that workflows are up to date - run: sbt '++ ${{ matrix.scala }}' githubWorkflowCheck + run: sbt --client '++ ${{ matrix.scala }}; githubWorkflowCheck' - name: Build project run: sbt test diff --git a/build.sbt b/build.sbt index 7747c94..dd7612e 100644 --- a/build.sbt +++ b/build.sbt @@ -28,20 +28,19 @@ val scalacheckDep = "org.scalacheck" %% "scalacheck" % "1.19.0" val scalaReflect = Def.setting("org.scala-lang" % "scala-reflect" % scalaVersion.value) val scalariform = Seq( - ("org.scalariform" %% "scalariform" % "0.2.10") - .cross(CrossVersion.for3Use2_13) - .exclude("org.scala-lang.modules", "scala-xml_2.13"), + ("org.scalariform" %% "scalariform" % "0.2.10").exclude("org.scala-lang.modules", "scala-xml_2.13"), "org.scala-lang.modules" %% "scala-xml" % "2.4.0", ) // GitHub Actions config -val javaVersions = Seq(8, 11, 17, 21, 25).map(v => JavaSpec.temurin(v.toString)) +val javaVersions = Seq(17, 21, 25).map(v => JavaSpec.temurin(v.toString)) ThisBuild / githubWorkflowJavaVersions := javaVersions ThisBuild / githubWorkflowArtifactUpload := false ThisBuild / githubWorkflowBuildMatrixFailFast := Some(false) ThisBuild / githubWorkflowTargetBranches := Seq("master") ThisBuild / githubWorkflowPublishTargetBranches := Seq() +ThisBuild / githubWorkflowUseSbtThinClient := true def isJava(v: Int) = s"matrix.java == '${javaVersions.find(_.version == v.toString).get.render}'" @@ -72,13 +71,10 @@ lazy val baseSettings = Seq( "-Xlint:strict-unsealed-patmat", "-Ymacro-annotations", ), - Seq( - "-explain", - "-no-indent", - ), + Seq(), ), libraryDependencies ++= foldScalaV(scalaVersion.value)( - Seq(compilerPlugin("org.typelevel" %% "kind-projector" % "0.13.4" cross CrossVersion.full)), + Seq(compilerPlugin(("org.typelevel" %% "kind-projector" % "0.13.4").cross(CrossVersion.full))), Seq(), ), ) @@ -102,54 +98,59 @@ lazy val testSettings = Seq(libraryDependencies += scalacheckDep % Test) baseSettings -def baseProj(id: String, nme: String) = - sbt.internal.ProjectMatrix(id, file(id)) +def baseProj(matrix: ProjectMatrix, nme: String) = + matrix .jvmPlatform(scalaVersions = Seq(scala2, scala3)) .settings(baseSettings ++ Seq(name := nme)) -lazy val generate = baseProj("generate", "andxor-generate") +lazy val generate = projectMatrix.in(file("generate")) + .customRow( + scalaVersions = Seq(scala3), + axisValues = Seq(VirtualAxis.jvm), + settings = Seq(), + ) + .customRow( + scalaVersions = Seq(scala2), + axisValues = Seq(VirtualAxis.jvm), + _.settings( + libraryDependencies ++= scalariform ++ Seq(betterFiles, catsCore, scalaReflect.value), + TwirlKeys.templateImports := Seq(), + Compile / TwirlKeys.compileTemplates / sourceDirectories := Seq((Compile / sourceDirectory).value / "twirl-2"), + Test / TwirlKeys.compileTemplates / sourceDirectories := Seq(), + ).enablePlugins(SbtTwirl), + ) .settings( - libraryDependencies ++= scalariform ++ foldScalaV(scalaVersion.value)( - Seq(betterFiles, catsCore, scalaReflect.value), - Seq(), - ), buildInfoKeys := Seq[BuildInfoKey]("rootDir" -> (ThisBuild / baseDirectory).value.toString), buildInfoPackage := "andxor", - TwirlKeys.templateImports := Seq(), - Compile / TwirlKeys.compileTemplates / sourceDirectories := foldScalaV(scalaVersion.value)( - Seq((Compile / sourceDirectory).value / "twirl-2"), - Seq(), - ), - Test / TwirlKeys.compileTemplates / sourceDirectories := Seq(), ) - .enablePlugins(BuildInfoPlugin, SbtTwirl) + .enablePlugins(BuildInfoPlugin) -lazy val core = baseProj("core", "andxor-core") +lazy val core = baseProj(projectMatrix.in(file("core")), "andxor-core") .settings(publishSettings) .settings( libraryDependencies ++= Seq(catsCore, monocleCore) ++ foldScalaV(scalaVersion.value)(Seq(newtype, scalaReflect.value), Seq()), ) -lazy val argonaut = baseProj("argonaut", "andxor-argonaut") +lazy val argonaut = baseProj(projectMatrix.in(file("argonaut")), "andxor-argonaut") .settings(publishSettings) .settings(publishOnlyScala2) .settings(testSettings) .settings(libraryDependencies += argonautDep) .dependsOn(core, scalacheck % Test) -lazy val circe = baseProj("circe", "andxor-circe") +lazy val circe = baseProj(projectMatrix.in(file("circe")), "andxor-circe") .settings(publishSettings) .settings(publishOnlyScala2) .settings(testSettings) .settings(libraryDependencies += circeDep) .dependsOn(core, scalacheck % Test) -lazy val scalacheck = baseProj("scalacheck", "andxor-scalacheck") +lazy val scalacheck = baseProj(projectMatrix.in(file("scalacheck")), "andxor-scalacheck") .settings(publishSettings) .settings(libraryDependencies += scalacheckDep) .dependsOn(core) -lazy val tests = baseProj("tests", "andxor-tests") +lazy val tests = baseProj(projectMatrix.in(file("tests")), "andxor-tests") .settings(libraryDependencies ++= Seq(catsLaws, monocleLaws)) .dependsOn(core, scalacheck, argonaut, circe) diff --git a/generate/src/main/scala-3/andxor/Generate.scala b/generate/src/main/scala-3/andxor/Generate.scala index e927e2d..891e16f 100644 --- a/generate/src/main/scala-3/andxor/Generate.scala +++ b/generate/src/main/scala-3/andxor/Generate.scala @@ -2,14 +2,8 @@ package andxor import andxor.template.* import java.nio.file.{Files, Path, Paths} -import scalariform.formatter.ScalaFormatter -import scalariform.formatter.preferences.* object Generate { - val conf = FormattingPreferences() - .setPreference(NewlineAtEndOfFile, true) - .setPreference(SpacesAroundMultiImports, false) - val tpeLists1To22 = mkTpeList(1, 22) val tpeLists1To100 = mkTpeList(1, 100) val tpeLists2To22 = mkTpeList(2, 22) @@ -31,19 +25,14 @@ object Generate { getProj: Path => Path = _ / "core", mainOrTest: Path => Path = _ / "main", fileDir: Path => Path = identity _, - format: Boolean = false ): Unit = { val f = fileDir(mainOrTest(getProj(rootDir) / "src") / "scala-3" / "andxor") / name println(s"Generating $f...") val code = s"${pkgs.map(p => s"package $p").mkString("\n")}\n\n$contents" if (Files.notExists(f) || noWs(fileContents(f)) != noWs(code)) { - val toWrite = if (format) { - println(" formatting...") - ScalaFormatter.format(code, conf) - } else code println(" writing...") Option(f.getParent).foreach(Files.createDirectories(_)) - Files.write(f, toWrite.getBytes("UTF-8")) + Files.write(f, code.getBytes("UTF-8")) () } else { println(s"Skipping $f -- content is unchanged") diff --git a/project/build.properties b/project/build.properties index 7c1916d..666624a 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.12.12 +sbt.version=2.0.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index 32d133d..1f5ecfa 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -2,9 +2,8 @@ resolvers += "bondlink-maven-repo" at "https://maven.bondlink-cdn.com" addSbtPlugin("bondlink" % "sbt-s3-publish" % "0.0.1") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.13.1") -addSbtPlugin("com.eed3si9n" % "sbt-projectmatrix" % "0.11.0") addSbtPlugin("com.github.sbt" % "sbt-github-actions" % "0.30.0") -addSbtPlugin("org.playframework.twirl" % "sbt-twirl" % "2.0.9") +addSbtPlugin("org.playframework.twirl" % "sbt-twirl" % "2.1.0-M9") addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.1.6") addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.6") addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.9.0")