Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 2 additions & 23 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,35 +24,14 @@ 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)
uses: actions/checkout@v6
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
Expand Down Expand Up @@ -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
Expand Down
57 changes: 29 additions & 28 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -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}'"

Expand Down Expand Up @@ -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(),
),
)
Expand All @@ -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)

Expand Down
13 changes: 1 addition & 12 deletions generate/src/main/scala-3/andxor/Generate.scala
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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")
Expand Down
2 changes: 1 addition & 1 deletion project/build.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
sbt.version=1.12.12
sbt.version=2.0.0
3 changes: 1 addition & 2 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -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")