From c8c4d146a86a3a1376ea53b2d50a11c47bf07daf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 19:10:51 +0300 Subject: [PATCH 01/50] Implement something that looks like an sbt plugin Doesn't work yet --- .gitignore | 8 +- .scala-steward.conf | 3 + .scalafmt.conf | 21 +++++ build.sbt | 18 ++++ core/build.sbt | 7 ++ .../scala/io/circe/sbt/CirceIoPlugin.scala | 91 +++++++++++++++++++ project/build.properties | 1 + project/build.sbt | 1 + project/src | 1 + 9 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 .scala-steward.conf create mode 100644 .scalafmt.conf create mode 100644 build.sbt create mode 100644 core/build.sbt create mode 100644 core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala create mode 100644 project/build.properties create mode 120000 project/build.sbt create mode 120000 project/src diff --git a/.gitignore b/.gitignore index 9c07d4a..340bb65 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ -*.class -*.log +target/ +.idea/ +.vscode +.bloop +.metals +.bsp/ \ No newline at end of file diff --git a/.scala-steward.conf b/.scala-steward.conf new file mode 100644 index 0000000..75b0709 --- /dev/null +++ b/.scala-steward.conf @@ -0,0 +1,3 @@ +updates.pin = [ + { groupId = "org.scala-lang", artifactId = "scala-library", version = "2.12." } +] \ No newline at end of file diff --git a/.scalafmt.conf b/.scalafmt.conf new file mode 100644 index 0000000..d76b017 --- /dev/null +++ b/.scalafmt.conf @@ -0,0 +1,21 @@ +version = 3.5.3 +project.git = true +runner.dialect = scala213 +project.layout = StandardConvention +continuationIndent.defnSite = 2 +docstrings.style = Asterisk +docstrings.wrap = no +includeCurlyBraceInSelectChains = false +maxColumn = 120 +newlines.alwaysBeforeElseAfterCurlyIf = false +newlines.alwaysBeforeMultilineDef = false +optIn.breakChainOnFirstMethodDot = false +spaces.inImportCurlyBraces = true +rewrite.rules = [ + AvoidInfix, + RedundantParens, + AsciiSortImports, + PreferCurlyFors +] +newlines.afterCurlyLambda = preserve +newlines.beforeCurlyLambdaParams = multilineWithCaseOnly \ No newline at end of file diff --git a/build.sbt b/build.sbt new file mode 100644 index 0000000..f3d8b36 --- /dev/null +++ b/build.sbt @@ -0,0 +1,18 @@ +enablePlugins(TypelevelCiReleasePlugin) + +// Projects +lazy val `sbt-circe-io` = project.in(file(".")).enablePlugins(NoPublishPlugin).aggregate(core) + +lazy val core = project + .in(file("core")) + .enablePlugins(SbtPlugin) + .settings( + name := "sbt-circe-io" + ) + +ThisBuild / tlBaseVersion := "0.1" +ThisBuild / crossScalaVersions := Seq("2.12.17") +ThisBuild / developers := List( +//TODO: +) +ThisBuild / startYear := Some(2022) diff --git a/core/build.sbt b/core/build.sbt new file mode 100644 index 0000000..a2c7ae0 --- /dev/null +++ b/core/build.sbt @@ -0,0 +1,7 @@ +val sbtTypelevelVersion = "0.4.14" // https://github.com/typelevel/sbt-typelevel/releases + +addSbtPlugin("org.typelevel" % "sbt-typelevel-ci-release" % "0.4.14") +addSbtPlugin("org.typelevel" % "sbt-typelevel-settings" % "0.4.14") +addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.4") // https://github.com/scoverage/sbt-scoverage/releases +// add everything needed for the website too in some future update diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala new file mode 100644 index 0000000..b84bd24 --- /dev/null +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -0,0 +1,91 @@ +package io.circe.sbt + +import org.typelevel.sbt._ +import org.typelevel.sbt.gha._ +import sbt.Keys._ +import sbt._ + +import ExplicitDepsPlugin.autoImport._ +import GenerativeKeys._ +import TypelevelKernelPlugin._ +import autoImport._ +import TypelevelCiPlugin.autoImport._ +import TypelevelSonatypePlugin.autoImport._ +import ScalastylePlugin.autoImport._ +import ScoverageSbtPlugin.autoImport._ + +object CirceIoPlugin extends AutoPlugin { + object autoImport + + override def trigger = allRequirements + + override def requires = TypelevelCiPlugin && TypelevelSonatypePlugin && ScalastylePlugin && ScoverageSbtPlugin + + override def buildSettings = + publishSettings ++ organizationSettings ++ githubActionsSettings + + override def projectSettings = explicitDepsSettings + + lazy val publishSettings: Seq[Setting[_]] = + Seq( + tlSonatypeUseLegacyHost := true + ) + + lazy val organizationSettings: Seq[Setting[_]] = + Seq( + organization := "io.circe", + organizationName := "io.circe" + ) + + lazy val githubActionsSettings: Seq[Setting[_]] = + Seq( + githubWorkflowJavaVersions := List("8", "11", "17").map(JavaSpec.temurin(_)), + tlCiScalafixCheck := false, + githubWorkflowBuildPostamble ++= Seq( + WorkflowJob( + id = "scalafmt", + name = "Scalafmt and Scalastyle", + scalas = List(crossScalaVersions.value.last), + steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( + List(githubWorkflowJavaVersions.value.last) + ) ++ githubWorkflowGeneratedCacheSteps.value ++ List( + WorkflowStep.Sbt( + List("+scalafmtCheckAll", "scalafmtSbtCheck", "scalastyle"), + name = Some("Scalafmt and Scalastyle tests") + ) + ) + ), + WorkflowJob( + id = "coverage", + name = "Generate coverage report", + scalas = crossScalaVersions.value.filterNot(_.startsWith("3.")).toList, + steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( + List(githubWorkflowJavaVersions.value.last) + ) ++ githubWorkflowGeneratedCacheSteps.value ++ List( + WorkflowStep.Sbt(List("coverage", "rootJVM/test", "coverageAggregate")), + WorkflowStep.Use( + UseRef.Public( + "codecov", + "codecov-action", + "v2" + ), + params = Map( + "flags" -> List("${{matrix.scala}}", "${{matrix.java}}").mkString(",") + ) + ) + ) + ) + ).githubWorkflowBuildMatrixFailFast(:=).Some(false) + ) + + lazy val explicitDepsSettings: Seq[Setting[_]] = + Seq( + unusedCompileDependenciesTest := { + if (tlSkipIrrelevantScalas.value && (unusedCompileDependenciesTest / skip).value) + () + else unusedCompileDependenciesTest.value + }, + skipIfIrrelevant(unusedCompileDependenciesTest) + ) + +} diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000..b1e589d --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.7.1 \ No newline at end of file diff --git a/project/build.sbt b/project/build.sbt new file mode 120000 index 0000000..734f32e --- /dev/null +++ b/project/build.sbt @@ -0,0 +1 @@ +core/build.sbt \ No newline at end of file diff --git a/project/src b/project/src new file mode 120000 index 0000000..13c4927 --- /dev/null +++ b/project/src @@ -0,0 +1 @@ +core/src \ No newline at end of file From 3e575c1d678351b8f8b6a03d55fdc5196a137705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 19:25:37 +0300 Subject: [PATCH 02/50] Init scala project --- .gitignore | 2 +- .scalafmt.conf | 2 +- README.md | 4 ++-- project/build.properties | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 340bb65..a9c64e6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ target/ .vscode .bloop .metals -.bsp/ \ No newline at end of file +.bsp/ diff --git a/.scalafmt.conf b/.scalafmt.conf index d76b017..a7c8cc5 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -18,4 +18,4 @@ rewrite.rules = [ PreferCurlyFors ] newlines.afterCurlyLambda = preserve -newlines.beforeCurlyLambdaParams = multilineWithCaseOnly \ No newline at end of file +newlines.beforeCurlyLambdaParams = multilineWithCaseOnly diff --git a/README.md b/README.md index cc2792f..c431693 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# sbt-circe-org -An SBT plugin to support circe org projects +# sbt-circe-io +An SBT plugin to support `io.circe` projects diff --git a/project/build.properties b/project/build.properties index b1e589d..22af262 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.7.1 \ No newline at end of file +sbt.version=1.7.1 From 6e64ca88c477c9239c6da756560d3ea8736a6600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 19:26:14 +0300 Subject: [PATCH 03/50] Add initial implementation of CirceIoPlugin sbt plugin --- core/build.sbt | 4 +- .../scala/io/circe/sbt/CirceIoPlugin.scala | 88 +++++++++---------- project/build.sbt | 2 +- project/src | 2 +- 4 files changed, 45 insertions(+), 51 deletions(-) diff --git a/core/build.sbt b/core/build.sbt index a2c7ae0..60aed00 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -2,6 +2,6 @@ val sbtTypelevelVersion = "0.4.14" // https://github.com/typelevel/sbt-typelevel addSbtPlugin("org.typelevel" % "sbt-typelevel-ci-release" % "0.4.14") addSbtPlugin("org.typelevel" % "sbt-typelevel-settings" % "0.4.14") -addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.4") // https://github.com/scoverage/sbt-scoverage/releases +addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") // https://github.com/scalastyle/scalastyle-sbt-plugin/tags +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.9.3") // https://github.com/scoverage/sbt-scoverage/releases // add everything needed for the website too in some future update diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index b84bd24..a1ed614 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -1,11 +1,12 @@ package io.circe.sbt +import scoverage._ +import org.scalastyle.sbt._ import org.typelevel.sbt._ import org.typelevel.sbt.gha._ import sbt.Keys._ import sbt._ -import ExplicitDepsPlugin.autoImport._ import GenerativeKeys._ import TypelevelKernelPlugin._ import autoImport._ @@ -24,7 +25,9 @@ object CirceIoPlugin extends AutoPlugin { override def buildSettings = publishSettings ++ organizationSettings ++ githubActionsSettings - override def projectSettings = explicitDepsSettings + override def projectSettings = Seq( + // TODO: look over projects and see what's in common + ) lazy val publishSettings: Seq[Setting[_]] = Seq( @@ -37,55 +40,46 @@ object CirceIoPlugin extends AutoPlugin { organizationName := "io.circe" ) - lazy val githubActionsSettings: Seq[Setting[_]] = - Seq( - githubWorkflowJavaVersions := List("8", "11", "17").map(JavaSpec.temurin(_)), - tlCiScalafixCheck := false, - githubWorkflowBuildPostamble ++= Seq( - WorkflowJob( - id = "scalafmt", - name = "Scalafmt and Scalastyle", - scalas = List(crossScalaVersions.value.last), - steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( - List(githubWorkflowJavaVersions.value.last) - ) ++ githubWorkflowGeneratedCacheSteps.value ++ List( - WorkflowStep.Sbt( - List("+scalafmtCheckAll", "scalafmtSbtCheck", "scalastyle"), - name = Some("Scalafmt and Scalastyle tests") - ) + lazy val githubActionsSettings: Seq[Setting[_]] = Seq( + githubWorkflowJavaVersions := List("8", "11", "17").map(JavaSpec.temurin(_)), + tlCiScalafixCheck := false, + githubWorkflowBuildMatrixFailFast := Some(false), + githubWorkflowAddedJobs ++= Seq( + WorkflowJob( + id = "scalafmt", + name = "Scalafmt and Scalastyle", + scalas = List(crossScalaVersions.value.last), + steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( + List(githubWorkflowJavaVersions.value.last) + ) ++ githubWorkflowGeneratedCacheSteps.value ++ List( + WorkflowStep.Sbt( + List("+scalafmtCheckAll", "scalafmtSbtCheck", "scalastyle"), + name = Some("Scalafmt and Scalastyle tests") ) - ), - WorkflowJob( - id = "coverage", - name = "Generate coverage report", - scalas = crossScalaVersions.value.filterNot(_.startsWith("3.")).toList, - steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( - List(githubWorkflowJavaVersions.value.last) - ) ++ githubWorkflowGeneratedCacheSteps.value ++ List( - WorkflowStep.Sbt(List("coverage", "rootJVM/test", "coverageAggregate")), - WorkflowStep.Use( - UseRef.Public( - "codecov", - "codecov-action", - "v2" - ), - params = Map( - "flags" -> List("${{matrix.scala}}", "${{matrix.java}}").mkString(",") - ) + ) + ), + WorkflowJob( + id = "coverage", + name = "Generate coverage report", + scalas = crossScalaVersions.value.filterNot(_.startsWith("3.")).toList, + steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( + List(githubWorkflowJavaVersions.value.last) + ) ++ githubWorkflowGeneratedCacheSteps.value ++ List( + // TODO: read rootJVM from a property. TODO: see how those are defined + WorkflowStep.Sbt(List("coverage", "rootJVM/test", "coverageAggregate")), + WorkflowStep.Use( + UseRef.Public( + "codecov", + "codecov-action", + "v2" + ), + params = Map( + "flags" -> List("${{matrix.scala}}", "${{matrix.java}}").mkString(",") ) ) ) - ).githubWorkflowBuildMatrixFailFast(:=).Some(false) - ) - - lazy val explicitDepsSettings: Seq[Setting[_]] = - Seq( - unusedCompileDependenciesTest := { - if (tlSkipIrrelevantScalas.value && (unusedCompileDependenciesTest / skip).value) - () - else unusedCompileDependenciesTest.value - }, - skipIfIrrelevant(unusedCompileDependenciesTest) + ) ) + ) } diff --git a/project/build.sbt b/project/build.sbt index 734f32e..f24fe19 120000 --- a/project/build.sbt +++ b/project/build.sbt @@ -1 +1 @@ -core/build.sbt \ No newline at end of file +../core/build.sbt \ No newline at end of file diff --git a/project/src b/project/src index 13c4927..5bc79fa 120000 --- a/project/src +++ b/project/src @@ -1 +1 @@ -core/src \ No newline at end of file +../core/src \ No newline at end of file From c22bba6c4379b175614e0c72cfc3c0facc4dc279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:16:10 +0300 Subject: [PATCH 04/50] Shamelessly add myself as developer Co-authored-by: Arman Bilge --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index f3d8b36..f8fecdb 100644 --- a/build.sbt +++ b/build.sbt @@ -13,6 +13,6 @@ lazy val core = project ThisBuild / tlBaseVersion := "0.1" ThisBuild / crossScalaVersions := Seq("2.12.17") ThisBuild / developers := List( -//TODO: +tlGitHubDev("lorandszakacs", "Loránd Szakács") ) ThisBuild / startYear := Some(2022) From 61cec2431a39f6147e93314131e2f7b887e8e456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:11:23 +0300 Subject: [PATCH 05/50] Use only JDK 11 and 17 by default --- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index a1ed614..41d070f 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -41,7 +41,7 @@ object CirceIoPlugin extends AutoPlugin { ) lazy val githubActionsSettings: Seq[Setting[_]] = Seq( - githubWorkflowJavaVersions := List("8", "11", "17").map(JavaSpec.temurin(_)), + githubWorkflowJavaVersions := List("11", "17").map(JavaSpec.temurin(_)), tlCiScalafixCheck := false, githubWorkflowBuildMatrixFailFast := Some(false), githubWorkflowAddedJobs ++= Seq( From 100a64b7fa44a9c5e1167cb7e7fcb26dd447598f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:12:00 +0300 Subject: [PATCH 06/50] Remove fail-fast matrix behaviour --- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index 41d070f..a6656c6 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -43,7 +43,6 @@ object CirceIoPlugin extends AutoPlugin { lazy val githubActionsSettings: Seq[Setting[_]] = Seq( githubWorkflowJavaVersions := List("11", "17").map(JavaSpec.temurin(_)), tlCiScalafixCheck := false, - githubWorkflowBuildMatrixFailFast := Some(false), githubWorkflowAddedJobs ++= Seq( WorkflowJob( id = "scalafmt", From fa42baa0148be6f0d54cf38ae8b37806e346faa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:14:44 +0300 Subject: [PATCH 07/50] Remove scalastyle --- core/build.sbt | 1 - .../scala/io/circe/sbt/CirceIoPlugin.scala | 20 +------------------ 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/core/build.sbt b/core/build.sbt index 60aed00..7009567 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -2,6 +2,5 @@ val sbtTypelevelVersion = "0.4.14" // https://github.com/typelevel/sbt-typelevel addSbtPlugin("org.typelevel" % "sbt-typelevel-ci-release" % "0.4.14") addSbtPlugin("org.typelevel" % "sbt-typelevel-settings" % "0.4.14") -addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") // https://github.com/scalastyle/scalastyle-sbt-plugin/tags addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.9.3") // https://github.com/scoverage/sbt-scoverage/releases // add everything needed for the website too in some future update diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index a6656c6..b57a4ee 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -1,26 +1,21 @@ package io.circe.sbt import scoverage._ -import org.scalastyle.sbt._ import org.typelevel.sbt._ import org.typelevel.sbt.gha._ import sbt.Keys._ import sbt._ import GenerativeKeys._ -import TypelevelKernelPlugin._ -import autoImport._ import TypelevelCiPlugin.autoImport._ import TypelevelSonatypePlugin.autoImport._ -import ScalastylePlugin.autoImport._ -import ScoverageSbtPlugin.autoImport._ object CirceIoPlugin extends AutoPlugin { object autoImport override def trigger = allRequirements - override def requires = TypelevelCiPlugin && TypelevelSonatypePlugin && ScalastylePlugin && ScoverageSbtPlugin + override def requires = TypelevelCiPlugin && TypelevelSonatypePlugin && ScoverageSbtPlugin override def buildSettings = publishSettings ++ organizationSettings ++ githubActionsSettings @@ -44,19 +39,6 @@ object CirceIoPlugin extends AutoPlugin { githubWorkflowJavaVersions := List("11", "17").map(JavaSpec.temurin(_)), tlCiScalafixCheck := false, githubWorkflowAddedJobs ++= Seq( - WorkflowJob( - id = "scalafmt", - name = "Scalafmt and Scalastyle", - scalas = List(crossScalaVersions.value.last), - steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( - List(githubWorkflowJavaVersions.value.last) - ) ++ githubWorkflowGeneratedCacheSteps.value ++ List( - WorkflowStep.Sbt( - List("+scalafmtCheckAll", "scalafmtSbtCheck", "scalastyle"), - name = Some("Scalafmt and Scalastyle tests") - ) - ) - ), WorkflowJob( id = "coverage", name = "Generate coverage report", From 2610345c83c3ba3244bb880f0014d9b15a38b2da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:26:19 +0300 Subject: [PATCH 08/50] Use entire sbt-typelevel plugin --- core/build.sbt | 3 +-- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/core/build.sbt b/core/build.sbt index 7009567..4ef2df5 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -1,6 +1,5 @@ val sbtTypelevelVersion = "0.4.14" // https://github.com/typelevel/sbt-typelevel/releases -addSbtPlugin("org.typelevel" % "sbt-typelevel-ci-release" % "0.4.14") -addSbtPlugin("org.typelevel" % "sbt-typelevel-settings" % "0.4.14") +addSbtPlugin("org.typelevel" % "sbt-typelevel" % sbtTypelevelVersion) addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.9.3") // https://github.com/scoverage/sbt-scoverage/releases // add everything needed for the website too in some future update diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index b57a4ee..7bc9c2f 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -15,7 +15,7 @@ object CirceIoPlugin extends AutoPlugin { override def trigger = allRequirements - override def requires = TypelevelCiPlugin && TypelevelSonatypePlugin && ScoverageSbtPlugin + override def requires = TypelevelPlugin && ScoverageSbtPlugin override def buildSettings = publishSettings ++ organizationSettings ++ githubActionsSettings From 953ac9aec39bc8b10ddf5d89f9c699a2d0b9ff59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:31:05 +0300 Subject: [PATCH 09/50] Remove redundant enabling of TypelevelCiReleasePlugin --- build.sbt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/build.sbt b/build.sbt index f8fecdb..99ad790 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,5 @@ -enablePlugins(TypelevelCiReleasePlugin) - -// Projects -lazy val `sbt-circe-io` = project.in(file(".")).enablePlugins(NoPublishPlugin).aggregate(core) +lazy val `sbt-circe-io` = + project.in(file(".")).enablePlugins(NoPublishPlugin).aggregate(core) lazy val core = project .in(file("core")) @@ -13,6 +11,6 @@ lazy val core = project ThisBuild / tlBaseVersion := "0.1" ThisBuild / crossScalaVersions := Seq("2.12.17") ThisBuild / developers := List( -tlGitHubDev("lorandszakacs", "Loránd Szakács") + tlGitHubDev("lorandszakacs", "Loránd Szakács") ) ThisBuild / startYear := Some(2022) From 46c24cfd5192d27b8008bf6b0cfebf28987a9395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:33:40 +0300 Subject: [PATCH 10/50] Bump sbt-scoverage to 2.0.4 from 1.9.3 Now possible due to dropping scalastyle which brought in a binary incompatible downstream dep --- core/build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/build.sbt b/core/build.sbt index 4ef2df5..3ff8149 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -1,5 +1,5 @@ val sbtTypelevelVersion = "0.4.14" // https://github.com/typelevel/sbt-typelevel/releases addSbtPlugin("org.typelevel" % "sbt-typelevel" % sbtTypelevelVersion) -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.9.3") // https://github.com/scoverage/sbt-scoverage/releases +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.4") // https://github.com/scoverage/sbt-scoverage/releases // add everything needed for the website too in some future update From 057294699d462ff2dd4bddd21344ec4fc8611ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:48:30 +0300 Subject: [PATCH 11/50] Use scalafix and enable it --- .github/workflows/ci.yml | 249 ++++++++++++++++++ .github/workflows/clean.yml | 59 +++++ core/build.sbt | 1 + .../scala/io/circe/sbt/CirceIoPlugin.scala | 17 +- 4 files changed, 323 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/clean.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1de968f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,249 @@ +# This file was automatically generated by sbt-github-actions using the +# githubWorkflowGenerate task. You should add and commit this file to +# your git repository. It goes without saying that you shouldn't edit +# this file by hand! Instead, if you wish to make changes, you should +# change your sbt build configuration to revise the workflow description +# to meet your needs, then regenerate this file. + +name: Continuous Integration + +on: + pull_request: + branches: ['**', '!update/**', '!pr/**'] + push: + branches: ['**', '!update/**', '!pr/**'] + tags: [v*] + +env: + PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + SONATYPE_CREDENTIAL_HOST: ${{ secrets.SONATYPE_CREDENTIAL_HOST }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + PGP_SECRET: ${{ secrets.PGP_SECRET }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + build: + name: Build and Test + strategy: + matrix: + os: [ubuntu-latest] + scala: [2.12.17] + java: [temurin@11, temurin@17] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout current branch (full) + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Download Java (temurin@11) + id: download-java-temurin-11 + if: matrix.java == 'temurin@11' + uses: typelevel/download-java@v1 + with: + distribution: temurin + java-version: 11 + + - name: Setup Java (temurin@11) + if: matrix.java == 'temurin@11' + uses: actions/setup-java@v2 + with: + distribution: jdkfile + java-version: 11 + jdkFile: ${{ steps.download-java-temurin-11.outputs.jdkFile }} + + - name: Download Java (temurin@17) + id: download-java-temurin-17 + if: matrix.java == 'temurin@17' + uses: typelevel/download-java@v1 + with: + distribution: temurin + java-version: 17 + + - name: Setup Java (temurin@17) + if: matrix.java == 'temurin@17' + uses: actions/setup-java@v2 + with: + distribution: jdkfile + java-version: 17 + jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }} + + - name: Cache sbt + uses: actions/cache@v2 + with: + path: | + ~/.sbt + ~/.ivy2/cache + ~/.coursier/cache/v1 + ~/.cache/coursier/v1 + ~/AppData/Local/Coursier/Cache/v1 + ~/Library/Caches/Coursier/v1 + key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} + + - name: Check that workflows are up to date + run: sbt githubWorkflowCheck + + - name: Check headers and formatting + if: matrix.java == 'temurin@11' + run: sbt '++${{ matrix.scala }}' headerCheckAll scalafmtCheckAll 'project /' scalafmtSbtCheck + + - name: Test + run: sbt '++${{ matrix.scala }}' test + + - name: Check scalafix lints + if: matrix.java == 'temurin@11' + run: sbt '++${{ matrix.scala }}' 'scalafixAll --check' + + - name: Check binary compatibility + if: matrix.java == 'temurin@11' + run: sbt '++${{ matrix.scala }}' mimaReportBinaryIssues + + - name: Generate API documentation + if: matrix.java == 'temurin@11' + run: sbt '++${{ matrix.scala }}' doc + + - name: Make target directories + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') + run: mkdir -p target core/target project/target + + - name: Compress target directories + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') + run: tar cf targets.tar target core/target project/target + + - name: Upload target directories + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') + uses: actions/upload-artifact@v2 + with: + name: target-${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }} + path: targets.tar + + publish: + name: Publish Artifacts + needs: [build] + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') + strategy: + matrix: + os: [ubuntu-latest] + scala: [2.12.17] + java: [temurin@11] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout current branch (full) + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Download Java (temurin@11) + id: download-java-temurin-11 + if: matrix.java == 'temurin@11' + uses: typelevel/download-java@v1 + with: + distribution: temurin + java-version: 11 + + - name: Setup Java (temurin@11) + if: matrix.java == 'temurin@11' + uses: actions/setup-java@v2 + with: + distribution: jdkfile + java-version: 11 + jdkFile: ${{ steps.download-java-temurin-11.outputs.jdkFile }} + + - name: Download Java (temurin@17) + id: download-java-temurin-17 + if: matrix.java == 'temurin@17' + uses: typelevel/download-java@v1 + with: + distribution: temurin + java-version: 17 + + - name: Setup Java (temurin@17) + if: matrix.java == 'temurin@17' + uses: actions/setup-java@v2 + with: + distribution: jdkfile + java-version: 17 + jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }} + + - name: Cache sbt + uses: actions/cache@v2 + with: + path: | + ~/.sbt + ~/.ivy2/cache + ~/.coursier/cache/v1 + ~/.cache/coursier/v1 + ~/AppData/Local/Coursier/Cache/v1 + ~/Library/Caches/Coursier/v1 + key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} + + - name: Download target directories (2.12.17) + uses: actions/download-artifact@v2 + with: + name: target-${{ matrix.os }}-${{ matrix.java }}-2.12.17 + + - name: Inflate target directories (2.12.17) + run: | + tar xf targets.tar + rm targets.tar + + - name: Import signing key + if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE == '' + run: echo $PGP_SECRET | base64 -di | gpg --import + + - name: Import signing key and strip passphrase + if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE != '' + run: | + echo "$PGP_SECRET" | base64 -di > /tmp/signing-key.gpg + echo "$PGP_PASSPHRASE" | gpg --pinentry-mode loopback --passphrase-fd 0 --import /tmp/signing-key.gpg + (echo "$PGP_PASSPHRASE"; echo; echo) | gpg --command-fd 0 --pinentry-mode loopback --change-passphrase $(gpg --list-secret-keys --with-colons 2> /dev/null | grep '^sec:' | cut --delimiter ':' --fields 5 | tail -n 1) + + - name: Publish + run: sbt '++${{ matrix.scala }}' tlRelease + + coverage: + name: Generate coverage report + strategy: + matrix: + os: [ubuntu-latest] + scala: [2.12.17] + java: [temurin@11] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout current branch (fast) + uses: actions/checkout@v2 + + - name: Download Java (temurin@17) + id: download-java-temurin-17 + if: matrix.java == 'temurin@17' + uses: typelevel/download-java@v1 + with: + distribution: temurin + java-version: 17 + + - name: Setup Java (temurin@17) + if: matrix.java == 'temurin@17' + uses: actions/setup-java@v2 + with: + distribution: jdkfile + java-version: 17 + jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }} + + - name: Cache sbt + uses: actions/cache@v2 + with: + path: | + ~/.sbt + ~/.ivy2/cache + ~/.coursier/cache/v1 + ~/.cache/coursier/v1 + ~/AppData/Local/Coursier/Cache/v1 + ~/Library/Caches/Coursier/v1 + key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} + + - run: sbt '++${{ matrix.scala }}' coverage rootJVM/test coverageAggregate + + - uses: codecov/codecov-action@v2 + with: + flags: ${{matrix.scala}},${{matrix.java}} diff --git a/.github/workflows/clean.yml b/.github/workflows/clean.yml new file mode 100644 index 0000000..547aaa4 --- /dev/null +++ b/.github/workflows/clean.yml @@ -0,0 +1,59 @@ +# This file was automatically generated by sbt-github-actions using the +# githubWorkflowGenerate task. You should add and commit this file to +# your git repository. It goes without saying that you shouldn't edit +# this file by hand! Instead, if you wish to make changes, you should +# change your sbt build configuration to revise the workflow description +# to meet your needs, then regenerate this file. + +name: Clean + +on: push + +jobs: + delete-artifacts: + name: Delete Artifacts + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: Delete artifacts + run: | + # Customize those three lines with your repository and credentials: + REPO=${GITHUB_API_URL}/repos/${{ github.repository }} + + # A shortcut to call GitHub API. + ghapi() { curl --silent --location --user _:$GITHUB_TOKEN "$@"; } + + # A temporary file which receives HTTP response headers. + TMPFILE=/tmp/tmp.$$ + + # An associative array, key: artifact name, value: number of artifacts of that name. + declare -A ARTCOUNT + + # Process all artifacts on this repository, loop on returned "pages". + URL=$REPO/actions/artifacts + while [[ -n "$URL" ]]; do + + # Get current page, get response headers in a temporary file. + JSON=$(ghapi --dump-header $TMPFILE "$URL") + + # Get URL of next page. Will be empty if we are at the last page. + URL=$(grep '^Link:' "$TMPFILE" | tr ',' '\n' | grep 'rel="next"' | head -1 | sed -e 's/.*.*//') + rm -f $TMPFILE + + # Number of artifacts on this page: + COUNT=$(( $(jq <<<$JSON -r '.artifacts | length') )) + + # Loop on all artifacts on this page. + for ((i=0; $i < $COUNT; i++)); do + + # Get name of artifact and count instances of this name. + name=$(jq <<<$JSON -r ".artifacts[$i].name?") + ARTCOUNT[$name]=$(( $(( ${ARTCOUNT[$name]} )) + 1)) + + id=$(jq <<<$JSON -r ".artifacts[$i].id?") + size=$(( $(jq <<<$JSON -r ".artifacts[$i].size_in_bytes?") )) + printf "Deleting '%s' #%d, %'d bytes\n" $name ${ARTCOUNT[$name]} $size + ghapi -X DELETE $REPO/actions/artifacts/$id + done + done diff --git a/core/build.sbt b/core/build.sbt index 3ff8149..3d3adbb 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -1,5 +1,6 @@ val sbtTypelevelVersion = "0.4.14" // https://github.com/typelevel/sbt-typelevel/releases addSbtPlugin("org.typelevel" % "sbt-typelevel" % sbtTypelevelVersion) +addSbtPlugin("org.typelevel" % "sbt-typelevel-scalafix" % sbtTypelevelVersion) addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.4") // https://github.com/scoverage/sbt-scoverage/releases // add everything needed for the website too in some future update diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index 7bc9c2f..cf6109c 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -9,6 +9,7 @@ import sbt._ import GenerativeKeys._ import TypelevelCiPlugin.autoImport._ import TypelevelSonatypePlugin.autoImport._ +import scalafix.sbt.ScalafixPlugin.autoImport._ object CirceIoPlugin extends AutoPlugin { object autoImport @@ -18,7 +19,7 @@ object CirceIoPlugin extends AutoPlugin { override def requires = TypelevelPlugin && ScoverageSbtPlugin override def buildSettings = - publishSettings ++ organizationSettings ++ githubActionsSettings + publishSettings ++ organizationSettings ++ scalafixSettings ++ githubActionsSettings override def projectSettings = Seq( // TODO: look over projects and see what's in common @@ -32,12 +33,14 @@ object CirceIoPlugin extends AutoPlugin { lazy val organizationSettings: Seq[Setting[_]] = Seq( organization := "io.circe", - organizationName := "io.circe" + organizationName := "circe" ) + @scala.annotation.nowarn lazy val githubActionsSettings: Seq[Setting[_]] = Seq( githubWorkflowJavaVersions := List("11", "17").map(JavaSpec.temurin(_)), - tlCiScalafixCheck := false, + tlCiScalafixCheck := true, // yolo, let's see how it works on scala 3 :D + tlCiScalafmtCheck := true, githubWorkflowAddedJobs ++= Seq( WorkflowJob( id = "coverage", @@ -63,4 +66,12 @@ object CirceIoPlugin extends AutoPlugin { ) ) + lazy val scalafixSettings: Seq[Setting[_]] = + Seq( + scalafixScalaBinaryVersion := (LocalRootProject / scalaBinaryVersion).value, + scalafixDependencies ++= Seq( + "com.github.liancheng" %% "organize-imports" % "0.6.0" // https://github.com/liancheng/scalafix-organize-imports/tags + ) + ) + } From 5b244f8ffa6efe181d608e24dc179adb458ff291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:49:13 +0300 Subject: [PATCH 12/50] prePR --- .../main/scala/io/circe/sbt/CirceIoPlugin.scala | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index cf6109c..baa0a3d 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -1,3 +1,19 @@ +/* + * Copyright 2022 circe + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package io.circe.sbt import scoverage._ From df422f350b11bb20257c6423c1fe0999c91e23f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:49:35 +0300 Subject: [PATCH 13/50] Add trailing empty line --- .scala-steward.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.scala-steward.conf b/.scala-steward.conf index 75b0709..ab234af 100644 --- a/.scala-steward.conf +++ b/.scala-steward.conf @@ -1,3 +1,3 @@ updates.pin = [ { groupId = "org.scala-lang", artifactId = "scala-library", version = "2.12." } -] \ No newline at end of file +] From e6873095f19c31518576e7693b3906aa3a5f183b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 20:54:53 +0300 Subject: [PATCH 14/50] Enable typelevel-scalafiix-cats rule --- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index baa0a3d..12e9e08 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -86,7 +86,8 @@ object CirceIoPlugin extends AutoPlugin { Seq( scalafixScalaBinaryVersion := (LocalRootProject / scalaBinaryVersion).value, scalafixDependencies ++= Seq( - "com.github.liancheng" %% "organize-imports" % "0.6.0" // https://github.com/liancheng/scalafix-organize-imports/tags + "org.typelevel" %% "typelevel-scalafix-cats" % "0.1.5", // https://github.com/typelevel/typelevel-scalafix/releases + "com.github.liancheng" %% "organize-imports" % "0.6.0", // https://github.com/liancheng/scalafix-organize-imports/tags ) ) From acfd688816a4077cb1009d2bbb7ba75f4f1c3056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 21:10:48 +0300 Subject: [PATCH 15/50] Set JDK release version to 8 --- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index 12e9e08..b0dd94e 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -23,6 +23,7 @@ import sbt.Keys._ import sbt._ import GenerativeKeys._ +import TypelevelSettingsPlugin.autoImport._ import TypelevelCiPlugin.autoImport._ import TypelevelSonatypePlugin.autoImport._ import scalafix.sbt.ScalafixPlugin.autoImport._ @@ -43,7 +44,8 @@ object CirceIoPlugin extends AutoPlugin { lazy val publishSettings: Seq[Setting[_]] = Seq( - tlSonatypeUseLegacyHost := true + tlSonatypeUseLegacyHost := true, + tlJdkRelease := Some(8) ) lazy val organizationSettings: Seq[Setting[_]] = @@ -87,7 +89,7 @@ object CirceIoPlugin extends AutoPlugin { scalafixScalaBinaryVersion := (LocalRootProject / scalaBinaryVersion).value, scalafixDependencies ++= Seq( "org.typelevel" %% "typelevel-scalafix-cats" % "0.1.5", // https://github.com/typelevel/typelevel-scalafix/releases - "com.github.liancheng" %% "organize-imports" % "0.6.0", // https://github.com/liancheng/scalafix-organize-imports/tags + "com.github.liancheng" %% "organize-imports" % "0.6.0" // https://github.com/liancheng/scalafix-organize-imports/tags ) ) From cb371cfcbd6be24abb5e1a36ee4c3c6363412a48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 21:11:49 +0300 Subject: [PATCH 16/50] Refine nowarn for interpolators --- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index b0dd94e..ad0956e 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -54,7 +54,7 @@ object CirceIoPlugin extends AutoPlugin { organizationName := "circe" ) - @scala.annotation.nowarn + @scala.annotation.nowarn("msg=possible missing interpolator") lazy val githubActionsSettings: Seq[Setting[_]] = Seq( githubWorkflowJavaVersions := List("11", "17").map(JavaSpec.temurin(_)), tlCiScalafixCheck := true, // yolo, let's see how it works on scala 3 :D From 71ba8e1342340c7618be89d19ee7306a43faf1d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 21:13:29 +0300 Subject: [PATCH 17/50] Remove scalafix dependency. Already provided by sbt-typelevel-scalafix --- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index ad0956e..d361f0e 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -88,7 +88,6 @@ object CirceIoPlugin extends AutoPlugin { Seq( scalafixScalaBinaryVersion := (LocalRootProject / scalaBinaryVersion).value, scalafixDependencies ++= Seq( - "org.typelevel" %% "typelevel-scalafix-cats" % "0.1.5", // https://github.com/typelevel/typelevel-scalafix/releases "com.github.liancheng" %% "organize-imports" % "0.6.0" // https://github.com/liancheng/scalafix-organize-imports/tags ) ) From 543d01243882071163eea0f3480b307d5537b6bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 21:57:07 +0300 Subject: [PATCH 18/50] Add aproximation of CirceIoSitePlugin --- README.md | 27 +++- core/build.sbt | 1 + .../io/circe/sbt/site/images/circe.svg | 16 +++ .../io/circe/sbt/site/images/circe_alt.svg | 13 ++ .../sbt/site/images/circe_navbar_brand.svg | 13 ++ .../io/circe/sbt/site/images/navbar_brand.png | Bin 0 -> 6756 bytes .../circe/sbt/site/images/navbar_brand2x.png | Bin 0 -> 6756 bytes .../circe/sbt/site/images/sidebar_brand.png | Bin 0 -> 6756 bytes .../circe/sbt/site/images/sidebar_brand2x.png | Bin 0 -> 6756 bytes .../io/circe/sbt/site/site/styles.css | 19 +++ .../io/circe/sbt/CirceIoSitePlugin.scala | 118 ++++++++++++++++++ .../sbt/site/CirceIoHeliumExtensions.scala | 66 ++++++++++ 12 files changed, 272 insertions(+), 1 deletion(-) create mode 100644 core/src/main/resources/io/circe/sbt/site/images/circe.svg create mode 100644 core/src/main/resources/io/circe/sbt/site/images/circe_alt.svg create mode 100644 core/src/main/resources/io/circe/sbt/site/images/circe_navbar_brand.svg create mode 100644 core/src/main/resources/io/circe/sbt/site/images/navbar_brand.png create mode 100644 core/src/main/resources/io/circe/sbt/site/images/navbar_brand2x.png create mode 100644 core/src/main/resources/io/circe/sbt/site/images/sidebar_brand.png create mode 100644 core/src/main/resources/io/circe/sbt/site/images/sidebar_brand2x.png create mode 100644 core/src/main/resources/io/circe/sbt/site/site/styles.css create mode 100644 core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala create mode 100644 core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala diff --git a/README.md b/README.md index c431693..501613e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,27 @@ # sbt-circe-io -An SBT plugin to support `io.circe` projects + +This project is intended to set up sensible defaults and standards for projects under `circe.io`. +If it's useful outside `circe.io`, it probably should be pushed further upstream into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). + +## Installing it + +The plugin is deployed to Sonatype. + +```scala +addSbtPlugin("io.circe" % "sbt-circe-io" % "@VERSION@") +``` + +## What does it do? + +### `CirceIoPlugin` + +Triggers automatically. Use on all published `circe` modules. + +* Activates the sensible defaults of [sbt-typelevel](https://github.com/typelevel/sbt-typelevel/) +* Sets the organization info +* Enables automated license headers with appropriate years +* Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our workflow + +### `CirceIoSitePlugin` + +Must be manually triggered. Extends the `TypelevelSitePlugin` with the `circe.io` theme. See the [sbt-typelevel-site docs](https://typelevel.org/sbt-typelevel/site.html) for usage. diff --git a/core/build.sbt b/core/build.sbt index 3d3adbb..7e3e795 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -1,6 +1,7 @@ val sbtTypelevelVersion = "0.4.14" // https://github.com/typelevel/sbt-typelevel/releases addSbtPlugin("org.typelevel" % "sbt-typelevel" % sbtTypelevelVersion) +addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % sbtTypelevelVersion) addSbtPlugin("org.typelevel" % "sbt-typelevel-scalafix" % sbtTypelevelVersion) addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.4") // https://github.com/scoverage/sbt-scoverage/releases // add everything needed for the website too in some future update diff --git a/core/src/main/resources/io/circe/sbt/site/images/circe.svg b/core/src/main/resources/io/circe/sbt/site/images/circe.svg new file mode 100644 index 0000000..1c8bbbd --- /dev/null +++ b/core/src/main/resources/io/circe/sbt/site/images/circe.svg @@ -0,0 +1,16 @@ + + + + circe + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/core/src/main/resources/io/circe/sbt/site/images/circe_alt.svg b/core/src/main/resources/io/circe/sbt/site/images/circe_alt.svg new file mode 100644 index 0000000..b0de429 --- /dev/null +++ b/core/src/main/resources/io/circe/sbt/site/images/circe_alt.svg @@ -0,0 +1,13 @@ + + + + circe + Created with Sketch. + + + + + + + + diff --git a/core/src/main/resources/io/circe/sbt/site/images/circe_navbar_brand.svg b/core/src/main/resources/io/circe/sbt/site/images/circe_navbar_brand.svg new file mode 100644 index 0000000..b0de429 --- /dev/null +++ b/core/src/main/resources/io/circe/sbt/site/images/circe_navbar_brand.svg @@ -0,0 +1,13 @@ + + + + circe + Created with Sketch. + + + + + + + + diff --git a/core/src/main/resources/io/circe/sbt/site/images/navbar_brand.png b/core/src/main/resources/io/circe/sbt/site/images/navbar_brand.png new file mode 100644 index 0000000000000000000000000000000000000000..2bcc60466c7d3b7d54da16e05ac4eb28bf7dd20c GIT binary patch literal 6756 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 literal 0 HcmV?d00001 diff --git a/core/src/main/resources/io/circe/sbt/site/images/navbar_brand2x.png b/core/src/main/resources/io/circe/sbt/site/images/navbar_brand2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2bcc60466c7d3b7d54da16e05ac4eb28bf7dd20c GIT binary patch literal 6756 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 literal 0 HcmV?d00001 diff --git a/core/src/main/resources/io/circe/sbt/site/images/sidebar_brand.png b/core/src/main/resources/io/circe/sbt/site/images/sidebar_brand.png new file mode 100644 index 0000000000000000000000000000000000000000..2bcc60466c7d3b7d54da16e05ac4eb28bf7dd20c GIT binary patch literal 6756 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 literal 0 HcmV?d00001 diff --git a/core/src/main/resources/io/circe/sbt/site/images/sidebar_brand2x.png b/core/src/main/resources/io/circe/sbt/site/images/sidebar_brand2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2bcc60466c7d3b7d54da16e05ac4eb28bf7dd20c GIT binary patch literal 6756 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 literal 0 HcmV?d00001 diff --git a/core/src/main/resources/io/circe/sbt/site/site/styles.css b/core/src/main/resources/io/circe/sbt/site/site/styles.css new file mode 100644 index 0000000..6daaba7 --- /dev/null +++ b/core/src/main/resources/io/circe/sbt/site/site/styles.css @@ -0,0 +1,19 @@ +/* the css from https://github.com/circe/circe/blob/series/0.14.x/docs/src/main/resources/microsite/css/override.css + Need to see exactly how useful it is +*/ +/* .technologies { + display: none; +} + +.jumbotron { + background-image: none; +} + +.sidebar-nav>.sidebar-brand a .brand-wrapper { + background-size: 36px 36px !important; +} + +#site-header .navbar-wrapper .brand .icon-wrapper { + width: 36px; + background-size: 100%; +} */ \ No newline at end of file diff --git a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala new file mode 100644 index 0000000..8d7770b --- /dev/null +++ b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala @@ -0,0 +1,118 @@ +package io.circe.sbt + +import laika.ast.LengthUnit._ +import laika.ast.Path.Root +import laika.ast._ +import laika.helium.Helium +import laika.helium.config.Favicon +import laika.helium.config.HeliumIcon +import laika.helium.config.IconLink +import laika.helium.config.ImageLink +import laika.sbt.LaikaPlugin +import laika.theme.config.Color +import org.typelevel.sbt.TypelevelGitHubPlugin +import org.typelevel.sbt.TypelevelSitePlugin +import sbt.Keys._ +import sbt._ + +object CirceIoSitePlugin extends AutoPlugin { + + override def requires = TypelevelSitePlugin && LaikaPlugin + + import TypelevelGitHubPlugin.autoImport._ + import TypelevelSitePlugin.autoImport._ + import LaikaPlugin.autoImport._ + + override def projectSettings: Seq[Setting[_]] = Seq( + tlSiteRelatedProjects := { + Seq( + "circe" -> url("https://github.com/circe/circe"), + // streaming helpers + "circe-fs2" -> url("https://github.com/circe/circe-fs2"), + "circe-iteratee" -> url("https://github.com/circe/circe-iteratee"), + // derivation helpers + "circe-generic-extras" -> url("https://github.com/circe/circe-generic-extras"), + "circe-derivation" -> url("https://github.com/circe/circe-derivation"), + // end-user utils + "circe-optics" -> url("https://github.com/circe/circe-optics"), + // 3rd-party integrations + "circe-droste" -> url("https://github.com/circe/circe-droste"), + "circe-spire" -> url("https://github.com/circe/circe-spire"), + "circe-config" -> url("https://github.com/circe/circe-config"), + // other formats + "circe-yaml" -> url("https://github.com/circe/circe-yaml"), + "circe-bson" -> url("https://github.com/circe/circe-bson"), + // schemas + "circe-schema" -> url("https://github.com/circe/circe-schema"), + "circe-golden" -> url("https://github.com/circe/circe-golden"), + "circe-json-schema" -> url("https://github.com/circe/circe-json-schema"), + // other backends + "circe-jackson" -> url("https://github.com/circe/circe-jackson"), + "circe-argus" -> url("https://github.com/circe/circe-argus") + ).filterNot { + case (repo, _) => + tlGitHubRepo.value.contains(repo) // omit ourselves! + } + }, + laikaTheme ~= { _.extend(site.CirceIoHeliumExtensions) }, + tlSiteHeliumConfig := { + Helium.defaults.all + .metadata( + title = tlGitHubRepo.value, + authors = developers.value.map(_.name), + language = Some("en"), + version = Some(version.value.toString) + ) + .site + .layout( + contentWidth = px(860), + navigationWidth = px(275), + topBarHeight = px(35), + defaultBlockSpacing = px(10), + defaultLineHeight = 1.5, + anchorPlacement = laika.helium.config.AnchorPlacement.Right + ) + .site + .themeColors( + // copy and adapt from the circe microsite pallete https://github.com/circe/circe/blob/series/0.14.x/build.sbt#L151 + primary = Color.hex("5B5988"), + secondary = Color.hex("292E53"), + primaryMedium = Color.hex("5B5988"), // TODO + primaryLight = Color.hex("5B5988"), // TODO + text = Color.hex("5f5f5f"), // TODO + background = Color.hex("ffffff"), // TODO + bgGradient = (Color.hex("334044"), Color.hex("5B7980")) // TODO: only used for landing page background + ) + .site + .favIcons( + Favicon.internal(Root / "images" / "circe_navbar-brand.svg", "32x32").copy(sizes = None), + Favicon.internal(Root / "images" / "navbar_brand.png", "32x32") + ) + .site + .darkMode + .disabled + .site + .topNavigationBar( + homeLink = ImageLink.external( + "https://github.com/circe/circe", + Image.internal(Root / "images" / "circe_navbar-brand.svg") + ), + navLinks = tlSiteApiUrl.value.toList.map { url => + IconLink.external( + url.toString, + HeliumIcon.api, + options = Styles("svg-link") + ) + } ++ Seq( + IconLink.external( + scmInfo.value.fold("https://github.com/circe")(_.browseUrl.toString), + HeliumIcon.github, + options = Styles("svg-link") + ), + IconLink.external("https://discord.gg/XF3CXcMzqD", HeliumIcon.chat) + ) + ) + } + ) + +} diff --git a/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala b/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala new file mode 100644 index 0000000..6b24ace --- /dev/null +++ b/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala @@ -0,0 +1,66 @@ +package io.circe.sbt.site + +import cats.effect.Resource +import cats.effect.kernel.Sync +import laika.ast.Path +import laika.io.model.InputTree +import laika.theme.Theme +import laika.theme.ThemeBuilder +import laika.theme.ThemeProvider + +object CirceIoHeliumExtensions extends ThemeProvider { + + // TODO: rename images, currently copied from https://github.com/circe/circe/tree/series/0.14.x/docs/src/main/resources/microsite/img + override def build[F[_]](implicit F: Sync[F]): Resource[F, Theme[F]] = + ThemeBuilder[F]("Circe Helium Extensions") + .addInputs( + InputTree[F].addStream( + F.blocking(getClass.getResourceAsStream("site/styles.css")), + Path.Root / "site" / "styles.css" + ) + ) + .addInputs( + InputTree[F].addStream( + F.blocking(getClass.getResourceAsStream("images/circe_alt.svg")), + Path.Root / "images" / "circe_alt.svg" + ) + ) + .addInputs( + InputTree[F].addStream( + F.blocking(getClass.getResourceAsStream("images/circe_navbar_brand.svg")), + Path.Root / "images" / "circe_navbar_brand.svg" + ) + ) + .addInputs( + InputTree[F].addStream( + F.blocking(getClass.getResourceAsStream("images/circe.svg")), + Path.Root / "images" / "circe.svg" + ) + ) + .addInputs( + InputTree[F].addStream( + F.blocking(getClass.getResourceAsStream("images/navbar_brand.png")), + Path.Root / "images" / "navbar_brand.png" + ) + ) + .addInputs( + InputTree[F].addStream( + F.blocking(getClass.getResourceAsStream("images/navbar_brand2x.png")), + Path.Root / "images" / "navbar_brand2x.png" + ) + ) + .addInputs( + InputTree[F].addStream( + F.blocking(getClass.getResourceAsStream("images/sidebar_brand.png")), + Path.Root / "images" / "sidebar_brand.png" + ) + ) + .addInputs( + InputTree[F].addStream( + F.blocking(getClass.getResourceAsStream("images/sidebar_brand2x.png")), + Path.Root / "images" / "sidebar_brand2x.png" + ) + ) + .build + +} From 0ddf2ba9a4a0a923e674a6c9e9d1761b816d5b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 20 Sep 2022 21:58:52 +0300 Subject: [PATCH 19/50] Eat own site and use README.md as docs/ module using CirceIoSitePlugin --- build.sbt | 6 ++++++ docs/README.md | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 docs/README.md diff --git a/build.sbt b/build.sbt index 99ad790..e992523 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,12 @@ lazy val `sbt-circe-io` = project.in(file(".")).enablePlugins(NoPublishPlugin).aggregate(core) +lazy val docs = project + .enablePlugins(CirceIoSitePlugin) + .settings( + tlSiteRelatedProjects += "sbt-typelevel" -> url("https://typelevel.org/sbt-typelevel/") + ) + lazy val core = project .in(file("core")) .enablePlugins(SbtPlugin) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..501613e --- /dev/null +++ b/docs/README.md @@ -0,0 +1,27 @@ +# sbt-circe-io + +This project is intended to set up sensible defaults and standards for projects under `circe.io`. +If it's useful outside `circe.io`, it probably should be pushed further upstream into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). + +## Installing it + +The plugin is deployed to Sonatype. + +```scala +addSbtPlugin("io.circe" % "sbt-circe-io" % "@VERSION@") +``` + +## What does it do? + +### `CirceIoPlugin` + +Triggers automatically. Use on all published `circe` modules. + +* Activates the sensible defaults of [sbt-typelevel](https://github.com/typelevel/sbt-typelevel/) +* Sets the organization info +* Enables automated license headers with appropriate years +* Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our workflow + +### `CirceIoSitePlugin` + +Must be manually triggered. Extends the `TypelevelSitePlugin` with the `circe.io` theme. See the [sbt-typelevel-site docs](https://typelevel.org/sbt-typelevel/site.html) for usage. From 2a4edb8cefde8dc9b7a4c548fcb733e6d31ca528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Wed, 21 Sep 2022 10:40:46 +0300 Subject: [PATCH 20/50] Update build.sbt Co-authored-by: Arman Bilge --- build.sbt | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sbt b/build.sbt index e992523..a20b5d8 100644 --- a/build.sbt +++ b/build.sbt @@ -2,6 +2,7 @@ lazy val `sbt-circe-io` = project.in(file(".")).enablePlugins(NoPublishPlugin).aggregate(core) lazy val docs = project + .in(file("site")) .enablePlugins(CirceIoSitePlugin) .settings( tlSiteRelatedProjects += "sbt-typelevel" -> url("https://typelevel.org/sbt-typelevel/") From be5fbfd7ba6020058391be5043ce85525c1b4748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Wed, 21 Sep 2022 12:11:03 +0300 Subject: [PATCH 21/50] Bump sbt-typelevel to 0.4.15 --- .github/workflows/ci.yml | 73 ++++++++++++++++++- core/build.sbt | 2 +- .../io/circe/sbt/CirceIoSitePlugin.scala | 16 ++++ .../sbt/site/CirceIoHeliumExtensions.scala | 16 ++++ 4 files changed, 104 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1de968f..7bc6f5d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,11 +105,11 @@ jobs: - name: Make target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: mkdir -p target core/target project/target + run: mkdir -p target docs/target core/target project/target - name: Compress target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: tar cf targets.tar target core/target project/target + run: tar cf targets.tar target docs/target core/target project/target - name: Upload target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') @@ -247,3 +247,72 @@ jobs: - uses: codecov/codecov-action@v2 with: flags: ${{matrix.scala}},${{matrix.java}} + + site: + name: Generate Site + strategy: + matrix: + os: [ubuntu-latest] + scala: [2.12.17] + java: [temurin@11] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout current branch (full) + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Download Java (temurin@11) + id: download-java-temurin-11 + if: matrix.java == 'temurin@11' + uses: typelevel/download-java@v1 + with: + distribution: temurin + java-version: 11 + + - name: Setup Java (temurin@11) + if: matrix.java == 'temurin@11' + uses: actions/setup-java@v2 + with: + distribution: jdkfile + java-version: 11 + jdkFile: ${{ steps.download-java-temurin-11.outputs.jdkFile }} + + - name: Download Java (temurin@17) + id: download-java-temurin-17 + if: matrix.java == 'temurin@17' + uses: typelevel/download-java@v1 + with: + distribution: temurin + java-version: 17 + + - name: Setup Java (temurin@17) + if: matrix.java == 'temurin@17' + uses: actions/setup-java@v2 + with: + distribution: jdkfile + java-version: 17 + jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }} + + - name: Cache sbt + uses: actions/cache@v2 + with: + path: | + ~/.sbt + ~/.ivy2/cache + ~/.coursier/cache/v1 + ~/.cache/coursier/v1 + ~/AppData/Local/Coursier/Cache/v1 + ~/Library/Caches/Coursier/v1 + key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} + + - name: Generate site + run: sbt '++${{ matrix.scala }}' docs/tlSite + + - name: Publish site + if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' + uses: peaceiris/actions-gh-pages@v3.8.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: docs/target/docs/site + keep_files: true diff --git a/core/build.sbt b/core/build.sbt index 7e3e795..b091ee0 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -1,4 +1,4 @@ -val sbtTypelevelVersion = "0.4.14" // https://github.com/typelevel/sbt-typelevel/releases +val sbtTypelevelVersion = "0.4.15" // https://github.com/typelevel/sbt-typelevel/releases addSbtPlugin("org.typelevel" % "sbt-typelevel" % sbtTypelevelVersion) addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % sbtTypelevelVersion) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala index 8d7770b..a7c23d0 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala @@ -1,3 +1,19 @@ +/* + * Copyright 2022 circe + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package io.circe.sbt import laika.ast.LengthUnit._ diff --git a/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala b/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala index 6b24ace..49b3d34 100644 --- a/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala +++ b/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala @@ -1,3 +1,19 @@ +/* + * Copyright 2022 circe + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package io.circe.sbt.site import cats.effect.Resource From a628e3debaff1485cdbd6eec7c51f51fc8bd37a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Wed, 21 Sep 2022 12:12:00 +0300 Subject: [PATCH 22/50] Ignore more metals things --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index a9c64e6..eca1de3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ target/ .vscode .bloop .metals +project/metals.sbt +project/project .bsp/ From 5d668cf682a459013decfa3aa6af0adb5945ec60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Wed, 21 Sep 2022 14:18:57 +0300 Subject: [PATCH 23/50] Put codecoverage under the circeRootOfCodeCoverage settingKey --- build.sbt | 3 ++ .../scala/io/circe/sbt/CirceIoPlugin.scala | 41 ++++++++++++------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/build.sbt b/build.sbt index a20b5d8..468a211 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,9 @@ lazy val `sbt-circe-io` = project.in(file(".")).enablePlugins(NoPublishPlugin).aggregate(core) +// we're not doing code coverage on this plugin. Set to Some("sbt-circe-io") if you wish to run it. +ThisBuild / circeRootOfCodeCoverage := None + lazy val docs = project .in(file("site")) .enablePlugins(CirceIoSitePlugin) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index d361f0e..78bddbd 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -29,7 +29,13 @@ import TypelevelSonatypePlugin.autoImport._ import scalafix.sbt.ScalafixPlugin.autoImport._ object CirceIoPlugin extends AutoPlugin { - object autoImport + object autoImport { + lazy val circeRootOfCodeCoverage = settingKey[Option[String]]( + "None if code coverage is disabled. Defined with name of the root project from which to run code coverage." + ) + } + + import autoImport._ override def trigger = allRequirements @@ -66,20 +72,25 @@ object CirceIoPlugin extends AutoPlugin { scalas = crossScalaVersions.value.filterNot(_.startsWith("3.")).toList, steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( List(githubWorkflowJavaVersions.value.last) - ) ++ githubWorkflowGeneratedCacheSteps.value ++ List( - // TODO: read rootJVM from a property. TODO: see how those are defined - WorkflowStep.Sbt(List("coverage", "rootJVM/test", "coverageAggregate")), - WorkflowStep.Use( - UseRef.Public( - "codecov", - "codecov-action", - "v2" - ), - params = Map( - "flags" -> List("${{matrix.scala}}", "${{matrix.java}}").mkString(",") - ) - ) - ) + ) ++ githubWorkflowGeneratedCacheSteps.value ++ + (circeRootOfCodeCoverage.value match { + case None => List.empty + case Some(rootProj) => + List( + // TODO: read rootJVM from a property. TODO: see how those are defined + WorkflowStep.Sbt(List("coverage", s"$rootProj/test", "coverageAggregate")), + WorkflowStep.Use( + UseRef.Public( + "codecov", + "codecov-action", + "v2" + ), + params = Map( + "flags" -> List("${{matrix.scala}}", "${{matrix.java}}").mkString(",") + ) + ) + ) + }) ) ) ) From d795892f631434b1ff1e31658d6ba706f7e67c19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Wed, 21 Sep 2022 14:19:36 +0300 Subject: [PATCH 24/50] Generate workflows --- .github/workflows/ci.yml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7bc6f5d..16b8e9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,11 +105,11 @@ jobs: - name: Make target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: mkdir -p target docs/target core/target project/target + run: mkdir -p target site/target core/target project/target - name: Compress target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: tar cf targets.tar target docs/target core/target project/target + run: tar cf targets.tar target site/target core/target project/target - name: Upload target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') @@ -242,12 +242,6 @@ jobs: ~/Library/Caches/Coursier/v1 key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} - - run: sbt '++${{ matrix.scala }}' coverage rootJVM/test coverageAggregate - - - uses: codecov/codecov-action@v2 - with: - flags: ${{matrix.scala}},${{matrix.java}} - site: name: Generate Site strategy: @@ -314,5 +308,5 @@ jobs: uses: peaceiris/actions-gh-pages@v3.8.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: docs/target/docs/site + publish_dir: site/target/docs/site keep_files: true From dfa8334b7a206f7aa5f8634eb51b136c2da7cc04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Wed, 21 Sep 2022 14:30:38 +0300 Subject: [PATCH 25/50] Disable scalafix check for the plugin build --- .github/workflows/ci.yml | 4 ---- build.sbt | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 16b8e9d..009124a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -91,10 +91,6 @@ jobs: - name: Test run: sbt '++${{ matrix.scala }}' test - - name: Check scalafix lints - if: matrix.java == 'temurin@11' - run: sbt '++${{ matrix.scala }}' 'scalafixAll --check' - - name: Check binary compatibility if: matrix.java == 'temurin@11' run: sbt '++${{ matrix.scala }}' mimaReportBinaryIssues diff --git a/build.sbt b/build.sbt index 468a211..3e3b2c0 100644 --- a/build.sbt +++ b/build.sbt @@ -3,6 +3,7 @@ lazy val `sbt-circe-io` = // we're not doing code coverage on this plugin. Set to Some("sbt-circe-io") if you wish to run it. ThisBuild / circeRootOfCodeCoverage := None +ThisBuild / tlCiScalafixCheck := false // we have no scalafix for the plugin lazy val docs = project .in(file("site")) From e551d246371d096f5947983955bcce8da1ae5d20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Thu, 22 Sep 2022 12:05:00 +0300 Subject: [PATCH 26/50] Eat own scalafix --- .github/workflows/ci.yml | 4 ++++ .scalafix.conf | 3 +++ build.sbt | 2 +- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 1 - 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 .scalafix.conf diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 009124a..16b8e9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -91,6 +91,10 @@ jobs: - name: Test run: sbt '++${{ matrix.scala }}' test + - name: Check scalafix lints + if: matrix.java == 'temurin@11' + run: sbt '++${{ matrix.scala }}' 'scalafixAll --check' + - name: Check binary compatibility if: matrix.java == 'temurin@11' run: sbt '++${{ matrix.scala }}' mimaReportBinaryIssues diff --git a/.scalafix.conf b/.scalafix.conf new file mode 100644 index 0000000..edf55ae --- /dev/null +++ b/.scalafix.conf @@ -0,0 +1,3 @@ +rules = [ + OrganizeImports +] diff --git a/build.sbt b/build.sbt index 3e3b2c0..c2487fb 100644 --- a/build.sbt +++ b/build.sbt @@ -3,7 +3,7 @@ lazy val `sbt-circe-io` = // we're not doing code coverage on this plugin. Set to Some("sbt-circe-io") if you wish to run it. ThisBuild / circeRootOfCodeCoverage := None -ThisBuild / tlCiScalafixCheck := false // we have no scalafix for the plugin +ThisBuild / tlCiScalafixCheck := true lazy val docs = project .in(file("site")) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index 78bddbd..2b07351 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -77,7 +77,6 @@ object CirceIoPlugin extends AutoPlugin { case None => List.empty case Some(rootProj) => List( - // TODO: read rootJVM from a property. TODO: see how those are defined WorkflowStep.Sbt(List("coverage", s"$rootProj/test", "coverageAggregate")), WorkflowStep.Use( UseRef.Public( From c8962ab8e84727d265a5484abe6459b344d85d83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Thu, 22 Sep 2022 12:06:48 +0300 Subject: [PATCH 27/50] Remove comment - re-arrange stuff --- core/build.sbt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/build.sbt b/core/build.sbt index b091ee0..d161b22 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -1,7 +1,7 @@ val sbtTypelevelVersion = "0.4.15" // https://github.com/typelevel/sbt-typelevel/releases +val sbtScoverageVersion = "2.0.4" // https://github.com/scoverage/sbt-scoverage/releases addSbtPlugin("org.typelevel" % "sbt-typelevel" % sbtTypelevelVersion) addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % sbtTypelevelVersion) addSbtPlugin("org.typelevel" % "sbt-typelevel-scalafix" % sbtTypelevelVersion) -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.4") // https://github.com/scoverage/sbt-scoverage/releases -// add everything needed for the website too in some future update +addSbtPlugin("org.scoverage" % "sbt-scoverage" % sbtScoverageVersion) From b5a628b0fbd7b7e2e218fa04b56924d9a1e91fc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Fri, 23 Sep 2022 09:09:48 +0300 Subject: [PATCH 28/50] Actually apply scalafix --- core/src/main/resources/io/circe/sbt/site/site/styles.css | 2 +- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/resources/io/circe/sbt/site/site/styles.css b/core/src/main/resources/io/circe/sbt/site/site/styles.css index 6daaba7..959a77a 100644 --- a/core/src/main/resources/io/circe/sbt/site/site/styles.css +++ b/core/src/main/resources/io/circe/sbt/site/site/styles.css @@ -16,4 +16,4 @@ #site-header .navbar-wrapper .brand .icon-wrapper { width: 36px; background-size: 100%; -} */ \ No newline at end of file +} */ diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index 2b07351..f2ad8b8 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -16,17 +16,17 @@ package io.circe.sbt -import scoverage._ import org.typelevel.sbt._ import org.typelevel.sbt.gha._ import sbt.Keys._ import sbt._ +import scalafix.sbt.ScalafixPlugin.autoImport._ +import scoverage._ import GenerativeKeys._ import TypelevelSettingsPlugin.autoImport._ import TypelevelCiPlugin.autoImport._ import TypelevelSonatypePlugin.autoImport._ -import scalafix.sbt.ScalafixPlugin.autoImport._ object CirceIoPlugin extends AutoPlugin { object autoImport { From 9c16c03596e5b47ac4ad8785bd9f4ddab9b2d689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Fri, 23 Sep 2022 11:19:50 +0300 Subject: [PATCH 29/50] Do not generate empty code coverage workflow when circeRootOfCodeCoverage is None --- .github/workflows/ci.yml | 40 ------------------- .../scala/io/circe/sbt/CirceIoPlugin.scala | 30 +++++++------- 2 files changed, 15 insertions(+), 55 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 16b8e9d..89f2405 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -202,46 +202,6 @@ jobs: - name: Publish run: sbt '++${{ matrix.scala }}' tlRelease - coverage: - name: Generate coverage report - strategy: - matrix: - os: [ubuntu-latest] - scala: [2.12.17] - java: [temurin@11] - runs-on: ${{ matrix.os }} - steps: - - name: Checkout current branch (fast) - uses: actions/checkout@v2 - - - name: Download Java (temurin@17) - id: download-java-temurin-17 - if: matrix.java == 'temurin@17' - uses: typelevel/download-java@v1 - with: - distribution: temurin - java-version: 17 - - - name: Setup Java (temurin@17) - if: matrix.java == 'temurin@17' - uses: actions/setup-java@v2 - with: - distribution: jdkfile - java-version: 17 - jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }} - - - name: Cache sbt - uses: actions/cache@v2 - with: - path: | - ~/.sbt - ~/.ivy2/cache - ~/.coursier/cache/v1 - ~/.cache/coursier/v1 - ~/AppData/Local/Coursier/Cache/v1 - ~/Library/Caches/Coursier/v1 - key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} - site: name: Generate Site strategy: diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index f2ad8b8..d04bce1 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -65,18 +65,18 @@ object CirceIoPlugin extends AutoPlugin { githubWorkflowJavaVersions := List("11", "17").map(JavaSpec.temurin(_)), tlCiScalafixCheck := true, // yolo, let's see how it works on scala 3 :D tlCiScalafmtCheck := true, - githubWorkflowAddedJobs ++= Seq( - WorkflowJob( - id = "coverage", - name = "Generate coverage report", - scalas = crossScalaVersions.value.filterNot(_.startsWith("3.")).toList, - steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( - List(githubWorkflowJavaVersions.value.last) - ) ++ githubWorkflowGeneratedCacheSteps.value ++ - (circeRootOfCodeCoverage.value match { - case None => List.empty - case Some(rootProj) => - List( + githubWorkflowAddedJobs ++= + (circeRootOfCodeCoverage.value match { + case None => List.empty + case Some(rootProj) => + List( + WorkflowJob( + id = "coverage", + name = "Generate coverage report", + scalas = crossScalaVersions.value.filterNot(_.startsWith("3.")).toList, + steps = List(WorkflowStep.Checkout) ++ WorkflowStep.SetupJava( + List(githubWorkflowJavaVersions.value.last) + ) ++ githubWorkflowGeneratedCacheSteps.value ++ List( WorkflowStep.Sbt(List("coverage", s"$rootProj/test", "coverageAggregate")), WorkflowStep.Use( UseRef.Public( @@ -89,9 +89,9 @@ object CirceIoPlugin extends AutoPlugin { ) ) ) - }) - ) - ) + ) + ) + }) ) lazy val scalafixSettings: Seq[Setting[_]] = From c7ad4e1aebc9fba5d760730dd15d6cf48a98a869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 11:21:31 +0300 Subject: [PATCH 30/50] Make text on site readable --- .../io/circe/sbt/CirceIoSitePlugin.scala | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala index a7c23d0..a191704 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala @@ -77,7 +77,7 @@ object CirceIoSitePlugin extends AutoPlugin { title = tlGitHubRepo.value, authors = developers.value.map(_.name), language = Some("en"), - version = Some(version.value.toString) + version = Some(version.value) ) .site .layout( @@ -89,19 +89,19 @@ object CirceIoSitePlugin extends AutoPlugin { anchorPlacement = laika.helium.config.AnchorPlacement.Right ) .site + /** See scaladoc on [[laika.helium.config.CommonConfigOps#themeColors()]] */ .themeColors( - // copy and adapt from the circe microsite pallete https://github.com/circe/circe/blob/series/0.14.x/build.sbt#L151 - primary = Color.hex("5B5988"), - secondary = Color.hex("292E53"), - primaryMedium = Color.hex("5B5988"), // TODO - primaryLight = Color.hex("5B5988"), // TODO - text = Color.hex("5f5f5f"), // TODO - background = Color.hex("ffffff"), // TODO - bgGradient = (Color.hex("334044"), Color.hex("5B7980")) // TODO: only used for landing page background + // copy and adapt from old circe microsite pallete https://github.com/circe/circe/blob/series/0.14.x/build.sbt#L151 + primary = Color.hex("222749"), + secondary = Color.hex("222749"), + primaryMedium = Color.hex("292E53"), + primaryLight = Color.hex("5B5988"), + text = Color.hex("5f5f5f"), + background = Color.hex("F4F3F4"), + bgGradient = (Color.hex("F4F3F4"), Color.hex("E5E5E6")) ) .site .favIcons( - Favicon.internal(Root / "images" / "circe_navbar-brand.svg", "32x32").copy(sizes = None), Favicon.internal(Root / "images" / "navbar_brand.png", "32x32") ) .site @@ -111,7 +111,11 @@ object CirceIoSitePlugin extends AutoPlugin { .topNavigationBar( homeLink = ImageLink.external( "https://github.com/circe/circe", - Image.internal(Root / "images" / "circe_navbar-brand.svg") + Image.internal( + Root / "images" / "navbar_brand.png", + width = Length(32, LengthUnit.px).some, + height = Length(32, LengthUnit.px).some + ) ), navLinks = tlSiteApiUrl.value.toList.map { url => IconLink.external( From 8a2607dfbf0d47a6045d5a1d64f9cd39c0ad8113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 12:00:49 +0300 Subject: [PATCH 31/50] Remove duplicated images, rename them for more clarity --- .../site/images/{circe.svg => circe_dark.svg} | 0 ...irce_alt.svg => circe_light_no_border.svg} | 0 ....png => circe_light_no_border_146x173.png} | Bin .../sbt/site/images/circe_navbar_brand.svg | 13 ------- .../circe/sbt/site/images/navbar_brand2x.png | Bin 6756 -> 0 bytes .../circe/sbt/site/images/sidebar_brand.png | Bin 6756 -> 0 bytes .../circe/sbt/site/images/sidebar_brand2x.png | Bin 6756 -> 0 bytes .../io/circe/sbt/CirceIoSitePlugin.scala | 4 +- .../sbt/site/CirceIoHeliumExtensions.scala | 36 +++--------------- 9 files changed, 8 insertions(+), 45 deletions(-) rename core/src/main/resources/io/circe/sbt/site/images/{circe.svg => circe_dark.svg} (100%) rename core/src/main/resources/io/circe/sbt/site/images/{circe_alt.svg => circe_light_no_border.svg} (100%) rename core/src/main/resources/io/circe/sbt/site/images/{navbar_brand.png => circe_light_no_border_146x173.png} (100%) delete mode 100644 core/src/main/resources/io/circe/sbt/site/images/circe_navbar_brand.svg delete mode 100644 core/src/main/resources/io/circe/sbt/site/images/navbar_brand2x.png delete mode 100644 core/src/main/resources/io/circe/sbt/site/images/sidebar_brand.png delete mode 100644 core/src/main/resources/io/circe/sbt/site/images/sidebar_brand2x.png diff --git a/core/src/main/resources/io/circe/sbt/site/images/circe.svg b/core/src/main/resources/io/circe/sbt/site/images/circe_dark.svg similarity index 100% rename from core/src/main/resources/io/circe/sbt/site/images/circe.svg rename to core/src/main/resources/io/circe/sbt/site/images/circe_dark.svg diff --git a/core/src/main/resources/io/circe/sbt/site/images/circe_alt.svg b/core/src/main/resources/io/circe/sbt/site/images/circe_light_no_border.svg similarity index 100% rename from core/src/main/resources/io/circe/sbt/site/images/circe_alt.svg rename to core/src/main/resources/io/circe/sbt/site/images/circe_light_no_border.svg diff --git a/core/src/main/resources/io/circe/sbt/site/images/navbar_brand.png b/core/src/main/resources/io/circe/sbt/site/images/circe_light_no_border_146x173.png similarity index 100% rename from core/src/main/resources/io/circe/sbt/site/images/navbar_brand.png rename to core/src/main/resources/io/circe/sbt/site/images/circe_light_no_border_146x173.png diff --git a/core/src/main/resources/io/circe/sbt/site/images/circe_navbar_brand.svg b/core/src/main/resources/io/circe/sbt/site/images/circe_navbar_brand.svg deleted file mode 100644 index b0de429..0000000 --- a/core/src/main/resources/io/circe/sbt/site/images/circe_navbar_brand.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - circe - Created with Sketch. - - - - - - - - diff --git a/core/src/main/resources/io/circe/sbt/site/images/navbar_brand2x.png b/core/src/main/resources/io/circe/sbt/site/images/navbar_brand2x.png deleted file mode 100644 index 2bcc60466c7d3b7d54da16e05ac4eb28bf7dd20c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6756 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 diff --git a/core/src/main/resources/io/circe/sbt/site/images/sidebar_brand.png b/core/src/main/resources/io/circe/sbt/site/images/sidebar_brand.png deleted file mode 100644 index 2bcc60466c7d3b7d54da16e05ac4eb28bf7dd20c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6756 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 diff --git a/core/src/main/resources/io/circe/sbt/site/images/sidebar_brand2x.png b/core/src/main/resources/io/circe/sbt/site/images/sidebar_brand2x.png deleted file mode 100644 index 2bcc60466c7d3b7d54da16e05ac4eb28bf7dd20c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6756 zcmd^E_d8r|w;l{ei!$1%Geh)FBB~c?v zM3jgUM2RqlIo|jC&UeoF8_vG2y`Qz$y4QWL_585+b3G5v*hrUwmWvhu05It5p-e8v ztjqg3i0blr$5QC{av%#b(bWVreB{}@w5>hOtb(l!4V0bze54#*{G42+!hQTNQ2>By zxbmgx;~MM;4fna{8>Aer2LA`4d};sfmWD(BfdqT2!L1C9p;~@{uFz{z3Q{s~by_GC zsv79xrfh=J`FHx|n;P6BIM`oVS~@H&Oe#!X$}iAeT2@I(Nm@ouT24;#5+NCM-#6GX zT+%m4;9n&F&4Y3cat`$L5BBu)h5pU!=;Rj?tOkewE%cx3Uv&n1y8VxmZ_vNnx@=JT z?})Ull#KL$xGz&x|Mn`Q13g_YmH*~fmsR}-`G0)>)=`!ITl{|&^RG_-@m{v7POB>Y zpJ`L4HRuzz1^_ra^-&sT;bc2@G~s62?F|cyn?QW52qVieFB=clZBRTjuRo->#%UJF z--|+2ONEC3i5lW)G9bZS8@(HFMPhHkZ-NJAHbK%ARW?U1^_S)4WCX?M1 zN+W?f!CAc{=29tdJDS2N4lFaaoE^RMA%E!zs$-byB-2XcSr6oLZwdV3lc>>Tk28A} zEPh2%L6C)C9;AIYY)m8KpJ)>#FD%+1N7($p%8o%Qf;Tuq!#Db8>!juHC!iyZ9iay| z+%3A8o(%iewY?Vj^oG;+0sF_jM1xqD=?2rmKG4tT_t#F!Om+!^C_&5%s97XWHc25T zzt)yEhQ*43x*$*AS_Q9{toMKjoz}ilLbcgDVkVUWcwaUUYjF5bGJ6Q%a)2DrIM#5P zI+OXiEo3WWFTEzA=Z?RcaR&9%ya}tQC8x6N+9a$hS^zQ`?vtBPW$ME?Kg6}AEkMEJ zG6SVF5V|=Kv%YZI&pJj^+hrgpFVrsyYNh+<#z+2#3d!3@@c4}eN6?yl(&7;>t6gWE z!-B3DWTLU>qh_VT6YB(ekF*Dr`Rmn;T}n$+ZKnltK~MO_)%Zj%7G~a7|M;q;U5Ohy>@LW-;>&S%bwG3&cFVP zlKc7sFEc1aDVRgUgJxK45eV8x^t`s-Vd&X>g%8;?ShN8LGLi3hk<|tt zDoQv57icLc3ZKZ`TpdG;D-~kseBUyzPS1SKuepCK4|C4{xX}_T>VI?~$8M#XZ!U2^ zb)q?L()Y<`n9Eq?p5Zgu7=tzA#ssUViV{HPZmZXr=g;1G9 zaemSFuR)P5DYD>#8be+AYwwiLzhNvc21qT*J<>WIFs<&0r{Rx0F9PNcXLw|`xm{jC zeq-gPG!}2`d1q`kJuDHZs}y4CNq$#JJMUfoZPkCkvm-jBYYkx+$aYIwkW?${rz66+ zOQ64)I!qyoP*?8-uR{vuvG3ShFAHp}ys(kyonEAXtGSl1CV6esaPYVd;oqDZxR1S+ zSW4T}CwbBnYZO$3YPS4Ip1Y)`ak6siI@1N*G6bpC;9bHzcc}O+526&K_uROZ*NJ_7 zmIfYz`x4uF)7eN6bN{LUUBWl-#P-tQZ?0~g!X0e4_|;-gBaY=w{_5Nb^-=F;6Q)ZnYkXiFw{?G@a^^Y2sMX5q#x! zo-96@zRpt;E&Q7Lm#h2s*+}H>sf6>-ozW>}T9Rk4fkiVPqwdQ)@5QSbxyOi~zc4kf zFOExP7QG3rS!u9lw}b~Mq_M7FpLjj5cB2&79ExW?G}y*MN`Cofrz4_XbPr?aPeu84 z3=Ua^Ct0FTshK<&sjtCME5*6=(#S8ON5EYp%R{+VTkpq1M3Q>KX(K0JHA#W@Vk+Iu zj^=Zckt({#|?ZYyHfq(2ll+>~z=sRmr#jNS+ zg8y}=HAFRMrictd#6?+;H3f+2X2MZbaLA&E(%yVt^{1uMK+EI}Ej+i(B~1_KkuWxq zgx*rC(^$k{KlUaw+?>3>2gwJBF>rSNeffbKiEzZkRod@_{zYQWdN;xl)RE_8xf>P_qr>(nRX=Pb76b8`yYp|MvGn_clb^s7#}bDV2?|b36=gB`{I`Q znxmYy@=%R<=T}8bw9Ra8I0tn4AsSgijx$0%y)GHZlX>F7nEvxRzOuDu*|30Y^ix5{ z8Rca=Z&h0^rpA7ivJVVk>mX+F6o3oO8KNQB+Y&Zxi0W(!wJu%_c>KjWWVo-UsalDL zqC8)=@FCrMk}(N9KIj`TB}O;Mf=l2C#drKjAD}dP@9Fy~!|);^Y80`-wa!madE)9; zB*JA$*@5jFZo+WPcTZV~zAE&YJG@>TC{6)Utk7>2o^^cdaC_0$QMY561KOshEtE;p zNvgwAkcp zdkK5SgyqtQA0!zRuv7CYKxEQ+lhR0kTBrg0VZ_E%VzRnzuy9s^)~lz9Q27a8ru)~qRq-Z^P@BwsQ#basIX38A3l5eV9=a+6Q z^7`Fdi};pdY#+hy+3{--eED^z-(y-IWyf2^ z?CB^Y{z@Mi+j*I#$J0FN7)6z!FxL9AGwg?Jg3>8E|H?yBut4Q_i~%j?A|RL4=ANH& zs?TlLB^=qSWAjT8E{SqGjwf8*>WO}=wE9%hV5w}~mnn&WyAyaV6T}wv7I4?o*Flw? z@W_8YXLyuFX?ZQ>jM@=hP)}-e)D9=TtS80)s25c_R5YZ*;iW5HrvBD!pVQWEsMHM) z?B}Pz-4uA%-!KjCda_k>)#pRuaQ*!vdkH$i!aHUxuu>*9W~2IQk{8-}aJMVQ97BjX zDSM{^mU2%mDIO$hFi|&*uYn0q} zg)K<7j+NcSj4$mJ_3KROqxxEv&$#1#fB(_2r+~g3!dDAa9!O7X&dWDRHQkFL){Hbd zUwAJg9JiAVXnhxGNt=}HgoKxlnF>1{){QEYWj)bS?*5l09R6?UlLRdAV`#zwIyQvvArQF&TyD)LWe^uArr5yVsh^@5ias zeEHtx0H`>=T?4fVhsZ&0@Fu-_A;RS^m$}ihk#>Y-irAXfqLjmZ?G=~Q?_o|=ql&zh z_}c6I%GuzDW0xZO_?bPiuLXm{ONBu;#G!>2yQbyrMjqF~nb|5D74tnUT;4U2#y@Mp z@PO#F95RkDbGWja>yU zr!=yXVPZZBHK0 zj&6?atRZ|_D(_VVxu7)sh?5{8-97iJcO%{_Xpq;6|6omBpwrV=8bdE@b#{P}gk zI#7dsctcNrc9gi#4s)9;WPxU|bYSHV-M2seun7VF=evl+ec;MCX0*tF3LaqWL3xhB ziv#Y?)2P|Z_ITpK5|avwd_Je)tIUVL2#YV4CB<7VOp8OcZqy*Js#RZD)qI?&8A1tO zInv=7Z`{6BkNqXYN!JtiV}if6^}FSWCkqAw+ga&7smMt}n1|dN5sH)DWfRt2E~#`8 zWGNpzuj!JJT|&w8>gpbM3&u9*{DG zjiA*;*touWJi-9~?oe%^tV&Yu-V%0`;630xL3hbqiO6=oUA2Fsx!yjhE%6Z-;-1?9y#f2yrzcUK1DAvD)l(JRUXlJBtDQmG+e%1_=MU~k{5ml zakyyS6?z`a9A!B8gPPt&$HhV5{Gso7$pHC@ZKk;pafYgJp_>Z44Rf|?0nB;NEB5;Ba=Qi-KlCodoJ-+hSiy+Acb*) zDU?wwG}hoqnm@_GL^No5eWl*P9<3l-Nco#jiB1ucz$df*eq-$(UQiEbmUu-WkUrC; zxwoJ7UAyp_8yvWzb;Ycpi8ZEg+MoARXii}35qw1%Wd(w8D zS$y9O!FbdKSkebiKtFd-;XdHoHKLij9{a|&;ERsnm4nl8Ef=--rFl|zi+LP6!x}=n zh!BnLd&Ju7_cnW+$6^%Hr_pu!ow<4szEVZ1_KxL07b)?2hh5pPIdmXi@k2sue!bLjSKj1+&)=ScD_0v-)xlL3X>IJ51-z6;YmVyq;~MfRvE z_)n?D>XlEGGdD~QWD1g4OOOvpN3o=~E9fvfpA$6OuX2$KROUJdOm4sCkwXWYOCe6x z)pU}%HbTg=(WiW!#qVmZ7r-fr@-pm^p9@R}e=RG{)+7m~Pn zlhc%_KY(31e_~tm6Ge*_*)@`c$`4^}nw_)}&#W83*sT51`d50d2su!e(rX8$ny=i| zPSJa>Tk9C4({thszF;d(z&=jd`=#(}#W}8`+ErT+`ZKhBDPJ1mxqY|t)IB#15u2VO zP;rb~M6G>(GHNA=@3@pa=3AQUh{gO|dRq~99WfYaQlRIkfXDW!=gf^*Hq5s?IIVkA zqg8eDCp6;#RY#`p&aq*zY>Yrai=4I~2pgk)BKdQdv4*(Pjzl?=$534Ci(H*gt% zI9GZBnT$~^fLpa(0%b`qDXDeLNF=j9K%&|!B^sV3t5~N4Ak!8kYs#sUB~R8Hn0?Ci z|Ab&j-Rl0axhdL|dC2MG{$8sbOxyU5PkG_wr#CroBC;P*-`~(u=2 zqDq%Hhfb#pfiE;2X-|dI%<>UTwH{`!&EpqT!3jI)k!}alf`ZN3GhJG5LE!hh?PnT% zxMv#dxUCUM>lhjra!^~5k(n|Md6P+0TABl6OnsuUDcorL(?fiE4-hl+sGvG6)C7zp zmNwWaw+^HRxws!ubFyo=#h^6ibWD1sL~%KpnQ7t1y2;c-9~}V+*jQB%c`jZt>t?9F zc2yHUkpHRV16ZT2>ZKg>S_$w>BX!Z}RTa$S(2X>p9JbrfrGU>U2HUW}5FW+%C@Mm& z#=Oak5@95m*S12`XRs(0W}M7m*g0bpcMyjxQ#jIH6ODa&;T!MmzgOWyRq|FD2Iqaq zZx*v%N~ZsmAIQRhD!p7?#|Rn*F7o1tWi!w3v|QO)kX6nzU}dauO>Gq1dH4ZY)*ur> zb-?ZD%)$Bca(l@xrDRxeO1Mb?;gMR^-2?#zv#0Pq`~uAEE$X{+`ByNKY*#-~yB4v*WlY zy~cT`k&Y@5=MsT0_thYR@|npon<#^UAGkht;8yG#JmV{qmNDn1NG>_HRjKTImG+}q znR+VGf>FE@hO8A(rl^obx=spsYcsCBeDt9)G?+i|^VLD7p;Ddl+^3Tmt8Bypi;w_p z+X>3VK(GK&vWdPF$)4#;;sdDX$%ZByc7t&%8obJF&XP8IJ&FUD)yYB0XBlI6#5u3~dzww=0jna-p93H^&U7O!G3og+gUN>Plh>Q zrXk{;KU~l;%w&sBj_&}BQuIl1dx|q z-Xu)O)PBsJ&<6sXPP*@}-HuA{Ety=;mK^*8iV8`Ps4}`bB|FQe!POsDrT zW!jDeWXk{#uA&rqqnAbZp??kL>Ukj8G2>?*HH~nM91x)Y5atbQ!BzB)X&FU2GrI-| zu*|;!vZV4KN&d{`XT6HuxH3&H2WE-K3tm`#`RF0xp|Fn9EaHVt48(1C%S?HEsry1j z4rqd{+3V4u6epYmV$8$FagfY$cE)%y1fKRJe8w5Bpa*lgj#7-G&|0`lJ)T;q=Mi_N zF#*&>AXUy+aDF%27?{qG71ma2w2?M^cqTG>!fj@nV-79#7`)IyoJWAgRtE{yaIH3k z%)wbtf$kZrZUpnB8I{PaJ~K^d8ylMwN zOUFz@NQDOfc;u$>m^{nJhtWiIUKj9|01bXbqH)R*0nr+hg-Q#WLiyHWJHCAgRq$a1WxLoTIz z9_>MnRNR7FC!r93g{bTz?{eEc6-$>U_Z2qj!y*;lOf7$%S=Xt&>Y89Ov^swX!87?UGk;4bI@Kn82LcUN^!Uqn;le4mQ+p{vC@2e714+2@s^B{d~BUFQ?L+pP609ZCM diff --git a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala index a191704..840e940 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala @@ -102,7 +102,7 @@ object CirceIoSitePlugin extends AutoPlugin { ) .site .favIcons( - Favicon.internal(Root / "images" / "navbar_brand.png", "32x32") + Favicon.internal(Root / "images" / "circe_light_no_border_146x173.png", "32x32") ) .site .darkMode @@ -112,7 +112,7 @@ object CirceIoSitePlugin extends AutoPlugin { homeLink = ImageLink.external( "https://github.com/circe/circe", Image.internal( - Root / "images" / "navbar_brand.png", + Root / "images" / "circe_light_no_border_146x173.png", width = Length(32, LengthUnit.px).some, height = Length(32, LengthUnit.px).some ) diff --git a/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala b/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala index 49b3d34..fde1800 100644 --- a/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala +++ b/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala @@ -37,44 +37,20 @@ object CirceIoHeliumExtensions extends ThemeProvider { ) .addInputs( InputTree[F].addStream( - F.blocking(getClass.getResourceAsStream("images/circe_alt.svg")), - Path.Root / "images" / "circe_alt.svg" + F.blocking(getClass.getResourceAsStream("images/circe_dark.svg")), + Path.Root / "images" / "circe_dark.svg" ) ) .addInputs( InputTree[F].addStream( - F.blocking(getClass.getResourceAsStream("images/circe_navbar_brand.svg")), - Path.Root / "images" / "circe_navbar_brand.svg" + F.blocking(getClass.getResourceAsStream("images/circe_light_no_border.svg")), + Path.Root / "images" / "circe_light_no_border.svg" ) ) .addInputs( InputTree[F].addStream( - F.blocking(getClass.getResourceAsStream("images/circe.svg")), - Path.Root / "images" / "circe.svg" - ) - ) - .addInputs( - InputTree[F].addStream( - F.blocking(getClass.getResourceAsStream("images/navbar_brand.png")), - Path.Root / "images" / "navbar_brand.png" - ) - ) - .addInputs( - InputTree[F].addStream( - F.blocking(getClass.getResourceAsStream("images/navbar_brand2x.png")), - Path.Root / "images" / "navbar_brand2x.png" - ) - ) - .addInputs( - InputTree[F].addStream( - F.blocking(getClass.getResourceAsStream("images/sidebar_brand.png")), - Path.Root / "images" / "sidebar_brand.png" - ) - ) - .addInputs( - InputTree[F].addStream( - F.blocking(getClass.getResourceAsStream("images/sidebar_brand2x.png")), - Path.Root / "images" / "sidebar_brand2x.png" + F.blocking(getClass.getResourceAsStream("images/circe_light_no_border_146x173.png")), + Path.Root / "images" / "circe_light_no_border_146x173.png" ) ) .build From 9dfe5b39fbb674e6f75140cd78e506f7c3c7275c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 12:05:35 +0300 Subject: [PATCH 32/50] Make logos and favicon actually display --- .../io/circe/sbt/site/site/styles.css | 22 ++++--------------- .../io/circe/sbt/CirceIoSitePlugin.scala | 6 +---- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/core/src/main/resources/io/circe/sbt/site/site/styles.css b/core/src/main/resources/io/circe/sbt/site/site/styles.css index 959a77a..fad1e6c 100644 --- a/core/src/main/resources/io/circe/sbt/site/site/styles.css +++ b/core/src/main/resources/io/circe/sbt/site/site/styles.css @@ -1,19 +1,5 @@ -/* the css from https://github.com/circe/circe/blob/series/0.14.x/docs/src/main/resources/microsite/css/override.css - Need to see exactly how useful it is -*/ -/* .technologies { - display: none; +header img { + height: 28px; + width: auto; + margin-top: 6px; } - -.jumbotron { - background-image: none; -} - -.sidebar-nav>.sidebar-brand a .brand-wrapper { - background-size: 36px 36px !important; -} - -#site-header .navbar-wrapper .brand .icon-wrapper { - width: 36px; - background-size: 100%; -} */ diff --git a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala index 840e940..146c3d5 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala @@ -111,11 +111,7 @@ object CirceIoSitePlugin extends AutoPlugin { .topNavigationBar( homeLink = ImageLink.external( "https://github.com/circe/circe", - Image.internal( - Root / "images" / "circe_light_no_border_146x173.png", - width = Length(32, LengthUnit.px).some, - height = Length(32, LengthUnit.px).some - ) + Image.internal(Root / "images" / "circe_light_no_border_146x173.png") ), navLinks = tlSiteApiUrl.value.toList.map { url => IconLink.external( From 07f8eecd9f9378ce51324b545904471ff3f7fb86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 12:09:48 +0300 Subject: [PATCH 33/50] Add section about images to README --- README.md | 21 ++++++++++++++++----- docs/README.md | 21 ++++++++++++++++----- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 501613e..887a3a7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # sbt-circe-io -This project is intended to set up sensible defaults and standards for projects under `circe.io`. -If it's useful outside `circe.io`, it probably should be pushed further upstream into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). +This project is intended to set up sensible defaults and standards for projects under `circe.io`. If it's useful +outside `circe.io`, it probably should be pushed further upstream +into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). ## Installing it @@ -15,13 +16,23 @@ addSbtPlugin("io.circe" % "sbt-circe-io" % "@VERSION@") ### `CirceIoPlugin` -Triggers automatically. Use on all published `circe` modules. +Triggers automatically. Use on all published `circe` modules. * Activates the sensible defaults of [sbt-typelevel](https://github.com/typelevel/sbt-typelevel/) * Sets the organization info * Enables automated license headers with appropriate years -* Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our workflow +* Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our + workflow ### `CirceIoSitePlugin` -Must be manually triggered. Extends the `TypelevelSitePlugin` with the `circe.io` theme. See the [sbt-typelevel-site docs](https://typelevel.org/sbt-typelevel/site.html) for usage. +Must be manually triggered. Extends the `TypelevelSitePlugin` with the `circe.io` theme. See +the [sbt-typelevel-site docs](https://typelevel.org/sbt-typelevel/site.html) for usage. + +#### Provided images + +You can refer to the following images in customizing the `laika` theme: + +- `Path.Root / "images" / "circe_dark.svg"` +- `Path.Root / "images" / "circe_light_no_border.svg"` +- `Path.Root / "images" / "circe_light_no_border_146x173.png"` diff --git a/docs/README.md b/docs/README.md index 501613e..887a3a7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,7 +1,8 @@ # sbt-circe-io -This project is intended to set up sensible defaults and standards for projects under `circe.io`. -If it's useful outside `circe.io`, it probably should be pushed further upstream into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). +This project is intended to set up sensible defaults and standards for projects under `circe.io`. If it's useful +outside `circe.io`, it probably should be pushed further upstream +into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). ## Installing it @@ -15,13 +16,23 @@ addSbtPlugin("io.circe" % "sbt-circe-io" % "@VERSION@") ### `CirceIoPlugin` -Triggers automatically. Use on all published `circe` modules. +Triggers automatically. Use on all published `circe` modules. * Activates the sensible defaults of [sbt-typelevel](https://github.com/typelevel/sbt-typelevel/) * Sets the organization info * Enables automated license headers with appropriate years -* Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our workflow +* Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our + workflow ### `CirceIoSitePlugin` -Must be manually triggered. Extends the `TypelevelSitePlugin` with the `circe.io` theme. See the [sbt-typelevel-site docs](https://typelevel.org/sbt-typelevel/site.html) for usage. +Must be manually triggered. Extends the `TypelevelSitePlugin` with the `circe.io` theme. See +the [sbt-typelevel-site docs](https://typelevel.org/sbt-typelevel/site.html) for usage. + +#### Provided images + +You can refer to the following images in customizing the `laika` theme: + +- `Path.Root / "images" / "circe_dark.svg"` +- `Path.Root / "images" / "circe_light_no_border.svg"` +- `Path.Root / "images" / "circe_light_no_border_146x173.png"` From 4597534f54069bea5ec89e0935bb06c2c32192ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 12:12:01 +0300 Subject: [PATCH 34/50] Fix comment --- core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala index 146c3d5..ff4da3a 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala @@ -89,9 +89,11 @@ object CirceIoSitePlugin extends AutoPlugin { anchorPlacement = laika.helium.config.AnchorPlacement.Right ) .site - /** See scaladoc on [[laika.helium.config.CommonConfigOps#themeColors()]] */ + /* See scaladoc on laika.helium.config.CommonConfigOps#themeColors() + * old circe website color theme reference point: + * https://github.com/circe/circe/blob/c666f32f3bd02644a927b624f7534fdeccbd62a6/build.sbt#L151 + */ .themeColors( - // copy and adapt from old circe microsite pallete https://github.com/circe/circe/blob/series/0.14.x/build.sbt#L151 primary = Color.hex("222749"), secondary = Color.hex("222749"), primaryMedium = Color.hex("292E53"), From 363eddc1dc60526caf21a0f5a45ad435176de167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 14:33:51 +0300 Subject: [PATCH 35/50] Disable code coverage for ScalaJS projects --- .../io/circe/sbt/CirceIoScalaJSPlugin.scala | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 core/src/main/scala/io/circe/sbt/CirceIoScalaJSPlugin.scala diff --git a/core/src/main/scala/io/circe/sbt/CirceIoScalaJSPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoScalaJSPlugin.scala new file mode 100644 index 0000000..50a453c --- /dev/null +++ b/core/src/main/scala/io/circe/sbt/CirceIoScalaJSPlugin.scala @@ -0,0 +1,37 @@ +/* + * Copyright 2022 circe + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.circe.sbt + +/** + * automatically loaded for all projects that are cross-compiled to ScalaJS, no need too reference it explicitly in builds + */ + +import org.scalajs.sbtplugin.ScalaJSPlugin +import sbt.* +import scoverage.ScoverageSbtPlugin.autoImport._ + +object CirceIoScalaJSPlugin extends AutoPlugin { + + override def trigger = allRequirements + + override def requires: Plugins = CirceIoPlugin && ScalaJSPlugin + + override def projectSettings: Seq[Setting[_]] = Seq( + coverageEnabled := false + ) + +} From ba4c6cf7b25e5d60bfaf1e7bbfaf213c521d8973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 14:34:21 +0300 Subject: [PATCH 36/50] Exclude io.circe.examples.* packages from code coverage --- README.md | 1 + core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 8 +++++--- docs/README.md | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 887a3a7..470c915 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ Triggers automatically. Use on all published `circe` modules. * Enables automated license headers with appropriate years * Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our workflow +* by default does not run code coverage in all `io.circe.examples.*` packages ### `CirceIoSitePlugin` diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index d04bce1..25b48b7 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -20,13 +20,14 @@ import org.typelevel.sbt._ import org.typelevel.sbt.gha._ import sbt.Keys._ import sbt._ -import scalafix.sbt.ScalafixPlugin.autoImport._ import scoverage._ import GenerativeKeys._ import TypelevelSettingsPlugin.autoImport._ import TypelevelCiPlugin.autoImport._ import TypelevelSonatypePlugin.autoImport._ +import scoverage.ScoverageSbtPlugin.autoImport._ +import scalafix.sbt.ScalafixPlugin.autoImport._ object CirceIoPlugin extends AutoPlugin { object autoImport { @@ -39,9 +40,9 @@ object CirceIoPlugin extends AutoPlugin { override def trigger = allRequirements - override def requires = TypelevelPlugin && ScoverageSbtPlugin + override def requires: Plugins = TypelevelPlugin && ScoverageSbtPlugin - override def buildSettings = + override def buildSettings: Seq[Setting[_]] = publishSettings ++ organizationSettings ++ scalafixSettings ++ githubActionsSettings override def projectSettings = Seq( @@ -65,6 +66,7 @@ object CirceIoPlugin extends AutoPlugin { githubWorkflowJavaVersions := List("11", "17").map(JavaSpec.temurin(_)), tlCiScalafixCheck := true, // yolo, let's see how it works on scala 3 :D tlCiScalafmtCheck := true, + coverageExcludedPackages := "io.circe.examples.*", githubWorkflowAddedJobs ++= (circeRootOfCodeCoverage.value match { case None => List.empty diff --git a/docs/README.md b/docs/README.md index 887a3a7..470c915 100644 --- a/docs/README.md +++ b/docs/README.md @@ -23,6 +23,7 @@ Triggers automatically. Use on all published `circe` modules. * Enables automated license headers with appropriate years * Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our workflow +* by default does not run code coverage in all `io.circe.examples.*` packages ### `CirceIoSitePlugin` From 753a6c92fcb437a74f8cc2f2a1b017ee9c441629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 14:42:07 +0300 Subject: [PATCH 37/50] Scalafix --- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index 25b48b7..75cc750 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -20,14 +20,14 @@ import org.typelevel.sbt._ import org.typelevel.sbt.gha._ import sbt.Keys._ import sbt._ +import scalafix.sbt.ScalafixPlugin.autoImport._ +import scoverage.ScoverageSbtPlugin.autoImport._ import scoverage._ import GenerativeKeys._ import TypelevelSettingsPlugin.autoImport._ import TypelevelCiPlugin.autoImport._ import TypelevelSonatypePlugin.autoImport._ -import scoverage.ScoverageSbtPlugin.autoImport._ -import scalafix.sbt.ScalafixPlugin.autoImport._ object CirceIoPlugin extends AutoPlugin { object autoImport { From dd5ed0ff96fda44e88e3ec1348e169e9609fffb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 14:47:39 +0300 Subject: [PATCH 38/50] Add default coverageHighlighting := true --- core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala index 75cc750..6319860 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala @@ -46,7 +46,8 @@ object CirceIoPlugin extends AutoPlugin { publishSettings ++ organizationSettings ++ scalafixSettings ++ githubActionsSettings override def projectSettings = Seq( - // TODO: look over projects and see what's in common + coverageHighlighting := true, + coverageExcludedPackages := "io.circe.examples.*" ) lazy val publishSettings: Seq[Setting[_]] = @@ -66,7 +67,6 @@ object CirceIoPlugin extends AutoPlugin { githubWorkflowJavaVersions := List("11", "17").map(JavaSpec.temurin(_)), tlCiScalafixCheck := true, // yolo, let's see how it works on scala 3 :D tlCiScalafmtCheck := true, - coverageExcludedPackages := "io.circe.examples.*", githubWorkflowAddedJobs ++= (circeRootOfCodeCoverage.value match { case None => List.empty From 2aff009628b57872b31261b2f71a934f70654aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 15:25:05 +0300 Subject: [PATCH 39/50] Rename CirceIo -> CirceOrg --- README.md | 10 +++++----- build.sbt | 6 +++--- .../sbt/{CirceIoPlugin.scala => CirceOrgPlugin.scala} | 2 +- ...ScalaJSPlugin.scala => CirceOrgScalaJSPlugin.scala} | 4 ++-- ...irceIoSitePlugin.scala => CirceOrgSitePlugin.scala} | 4 ++-- ...Extensions.scala => CirceOrgHeliumExtensions.scala} | 2 +- docs/README.md | 10 +++++----- 7 files changed, 19 insertions(+), 19 deletions(-) rename core/src/main/scala/io/circe/sbt/{CirceIoPlugin.scala => CirceOrgPlugin.scala} (98%) rename core/src/main/scala/io/circe/sbt/{CirceIoScalaJSPlugin.scala => CirceOrgScalaJSPlugin.scala} (89%) rename core/src/main/scala/io/circe/sbt/{CirceIoSitePlugin.scala => CirceOrgSitePlugin.scala} (97%) rename core/src/main/scala/io/circe/sbt/site/{CirceIoHeliumExtensions.scala => CirceOrgHeliumExtensions.scala} (97%) diff --git a/README.md b/README.md index 470c915..dfe274e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # sbt-circe-io -This project is intended to set up sensible defaults and standards for projects under `circe.io`. If it's useful -outside `circe.io`, it probably should be pushed further upstream +This project is intended to set up sensible defaults and standards for projects under `io.circe`. If it's useful +outside `io.circe`, it probably should be pushed further upstream into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). ## Installing it @@ -9,12 +9,12 @@ into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). The plugin is deployed to Sonatype. ```scala -addSbtPlugin("io.circe" % "sbt-circe-io" % "@VERSION@") +addSbtPlugin("io.circe" % "sbt-circe-org" % "@VERSION@") ``` ## What does it do? -### `CirceIoPlugin` +### `CirceOrgPlugin` Triggers automatically. Use on all published `circe` modules. @@ -25,7 +25,7 @@ Triggers automatically. Use on all published `circe` modules. workflow * by default does not run code coverage in all `io.circe.examples.*` packages -### `CirceIoSitePlugin` +### `CirceOrgSitePlugin` Must be manually triggered. Extends the `TypelevelSitePlugin` with the `circe.io` theme. See the [sbt-typelevel-site docs](https://typelevel.org/sbt-typelevel/site.html) for usage. diff --git a/build.sbt b/build.sbt index c2487fb..bb10c0a 100644 --- a/build.sbt +++ b/build.sbt @@ -1,4 +1,4 @@ -lazy val `sbt-circe-io` = +lazy val `sbt-circe-org` = project.in(file(".")).enablePlugins(NoPublishPlugin).aggregate(core) // we're not doing code coverage on this plugin. Set to Some("sbt-circe-io") if you wish to run it. @@ -7,7 +7,7 @@ ThisBuild / tlCiScalafixCheck := true lazy val docs = project .in(file("site")) - .enablePlugins(CirceIoSitePlugin) + .enablePlugins(CirceOrgSitePlugin) .settings( tlSiteRelatedProjects += "sbt-typelevel" -> url("https://typelevel.org/sbt-typelevel/") ) @@ -16,7 +16,7 @@ lazy val core = project .in(file("core")) .enablePlugins(SbtPlugin) .settings( - name := "sbt-circe-io" + name := "sbt-circe-org" ) ThisBuild / tlBaseVersion := "0.1" diff --git a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceOrgPlugin.scala similarity index 98% rename from core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala rename to core/src/main/scala/io/circe/sbt/CirceOrgPlugin.scala index 6319860..9ca06dc 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceOrgPlugin.scala @@ -29,7 +29,7 @@ import TypelevelSettingsPlugin.autoImport._ import TypelevelCiPlugin.autoImport._ import TypelevelSonatypePlugin.autoImport._ -object CirceIoPlugin extends AutoPlugin { +object CirceOrgPlugin extends AutoPlugin { object autoImport { lazy val circeRootOfCodeCoverage = settingKey[Option[String]]( "None if code coverage is disabled. Defined with name of the root project from which to run code coverage." diff --git a/core/src/main/scala/io/circe/sbt/CirceIoScalaJSPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceOrgScalaJSPlugin.scala similarity index 89% rename from core/src/main/scala/io/circe/sbt/CirceIoScalaJSPlugin.scala rename to core/src/main/scala/io/circe/sbt/CirceOrgScalaJSPlugin.scala index 50a453c..8c7c78e 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoScalaJSPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceOrgScalaJSPlugin.scala @@ -24,11 +24,11 @@ import org.scalajs.sbtplugin.ScalaJSPlugin import sbt.* import scoverage.ScoverageSbtPlugin.autoImport._ -object CirceIoScalaJSPlugin extends AutoPlugin { +object CirceOrgScalaJSPlugin extends AutoPlugin { override def trigger = allRequirements - override def requires: Plugins = CirceIoPlugin && ScalaJSPlugin + override def requires: Plugins = CirceOrgPlugin && ScalaJSPlugin override def projectSettings: Seq[Setting[_]] = Seq( coverageEnabled := false diff --git a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala b/core/src/main/scala/io/circe/sbt/CirceOrgSitePlugin.scala similarity index 97% rename from core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala rename to core/src/main/scala/io/circe/sbt/CirceOrgSitePlugin.scala index ff4da3a..dcb44b2 100644 --- a/core/src/main/scala/io/circe/sbt/CirceIoSitePlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceOrgSitePlugin.scala @@ -31,7 +31,7 @@ import org.typelevel.sbt.TypelevelSitePlugin import sbt.Keys._ import sbt._ -object CirceIoSitePlugin extends AutoPlugin { +object CirceOrgSitePlugin extends AutoPlugin { override def requires = TypelevelSitePlugin && LaikaPlugin @@ -70,7 +70,7 @@ object CirceIoSitePlugin extends AutoPlugin { tlGitHubRepo.value.contains(repo) // omit ourselves! } }, - laikaTheme ~= { _.extend(site.CirceIoHeliumExtensions) }, + laikaTheme ~= { _.extend(site.CirceOrgHeliumExtensions) }, tlSiteHeliumConfig := { Helium.defaults.all .metadata( diff --git a/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala b/core/src/main/scala/io/circe/sbt/site/CirceOrgHeliumExtensions.scala similarity index 97% rename from core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala rename to core/src/main/scala/io/circe/sbt/site/CirceOrgHeliumExtensions.scala index fde1800..c16ee67 100644 --- a/core/src/main/scala/io/circe/sbt/site/CirceIoHeliumExtensions.scala +++ b/core/src/main/scala/io/circe/sbt/site/CirceOrgHeliumExtensions.scala @@ -24,7 +24,7 @@ import laika.theme.Theme import laika.theme.ThemeBuilder import laika.theme.ThemeProvider -object CirceIoHeliumExtensions extends ThemeProvider { +object CirceOrgHeliumExtensions extends ThemeProvider { // TODO: rename images, currently copied from https://github.com/circe/circe/tree/series/0.14.x/docs/src/main/resources/microsite/img override def build[F[_]](implicit F: Sync[F]): Resource[F, Theme[F]] = diff --git a/docs/README.md b/docs/README.md index 470c915..dfe274e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,7 +1,7 @@ # sbt-circe-io -This project is intended to set up sensible defaults and standards for projects under `circe.io`. If it's useful -outside `circe.io`, it probably should be pushed further upstream +This project is intended to set up sensible defaults and standards for projects under `io.circe`. If it's useful +outside `io.circe`, it probably should be pushed further upstream into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). ## Installing it @@ -9,12 +9,12 @@ into [sbt-typelevel](https://github.com/typelevel/sbt-typelevel). The plugin is deployed to Sonatype. ```scala -addSbtPlugin("io.circe" % "sbt-circe-io" % "@VERSION@") +addSbtPlugin("io.circe" % "sbt-circe-org" % "@VERSION@") ``` ## What does it do? -### `CirceIoPlugin` +### `CirceOrgPlugin` Triggers automatically. Use on all published `circe` modules. @@ -25,7 +25,7 @@ Triggers automatically. Use on all published `circe` modules. workflow * by default does not run code coverage in all `io.circe.examples.*` packages -### `CirceIoSitePlugin` +### `CirceOrgSitePlugin` Must be manually triggered. Extends the `TypelevelSitePlugin` with the `circe.io` theme. See the [sbt-typelevel-site docs](https://typelevel.org/sbt-typelevel/site.html) for usage. From b36d24ed6a8b4a8ead739034bdd771d31caf00c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Sat, 24 Sep 2022 15:44:51 +0300 Subject: [PATCH 40/50] Remove done //TODO: --- .../main/scala/io/circe/sbt/site/CirceOrgHeliumExtensions.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/scala/io/circe/sbt/site/CirceOrgHeliumExtensions.scala b/core/src/main/scala/io/circe/sbt/site/CirceOrgHeliumExtensions.scala index c16ee67..c455f5f 100644 --- a/core/src/main/scala/io/circe/sbt/site/CirceOrgHeliumExtensions.scala +++ b/core/src/main/scala/io/circe/sbt/site/CirceOrgHeliumExtensions.scala @@ -26,7 +26,6 @@ import laika.theme.ThemeProvider object CirceOrgHeliumExtensions extends ThemeProvider { - // TODO: rename images, currently copied from https://github.com/circe/circe/tree/series/0.14.x/docs/src/main/resources/microsite/img override def build[F[_]](implicit F: Sync[F]): Resource[F, Theme[F]] = ThemeBuilder[F]("Circe Helium Extensions") .addInputs( From e0f8fe7c8adb288686b3661da25048cc8c703ef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Mon, 24 Oct 2022 14:00:27 +0300 Subject: [PATCH 41/50] Update docs/README.md Co-authored-by: Arman Bilge --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index dfe274e..1ac01ba 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -# sbt-circe-io +# sbt-circe-org This project is intended to set up sensible defaults and standards for projects under `io.circe`. If it's useful outside `io.circe`, it probably should be pushed further upstream From 85b669d42939b545517cf11b171e23680a908487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Mon, 24 Oct 2022 14:01:21 +0300 Subject: [PATCH 42/50] Update core/build.sbt Co-authored-by: Arman Bilge --- core/build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/build.sbt b/core/build.sbt index d161b22..8aeb794 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -1,4 +1,4 @@ -val sbtTypelevelVersion = "0.4.15" // https://github.com/typelevel/sbt-typelevel/releases +val sbtTypelevelVersion = "0.4.16" // https://github.com/typelevel/sbt-typelevel/releases val sbtScoverageVersion = "2.0.4" // https://github.com/scoverage/sbt-scoverage/releases addSbtPlugin("org.typelevel" % "sbt-typelevel" % sbtTypelevelVersion) From dab3ba0a0e859bae6edaf576aa745116c30d699a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Mon, 24 Oct 2022 14:01:31 +0300 Subject: [PATCH 43/50] Update README.md Co-authored-by: Arman Bilge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dfe274e..1ac01ba 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# sbt-circe-io +# sbt-circe-org This project is intended to set up sensible defaults and standards for projects under `io.circe`. If it's useful outside `io.circe`, it probably should be pushed further upstream From d9a1376b27b9d2e37f5481bf3b0abe737544bc0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Mon, 24 Oct 2022 14:01:48 +0300 Subject: [PATCH 44/50] Update README.md Co-authored-by: Arman Bilge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ac01ba..2dc4843 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Triggers automatically. Use on all published `circe` modules. * Activates the sensible defaults of [sbt-typelevel](https://github.com/typelevel/sbt-typelevel/) * Sets the organization info * Enables automated license headers with appropriate years -* Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our +* Enables [sbt-github-actions](https://typelevel.org/sbt-typelevel/gha.html) with settings appropriate to our workflow * by default does not run code coverage in all `io.circe.examples.*` packages From 7cfa12e62eb96ced12750c69e355a33ce86da70c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Mon, 24 Oct 2022 14:01:58 +0300 Subject: [PATCH 45/50] Update core/build.sbt Co-authored-by: Arman Bilge --- core/build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/build.sbt b/core/build.sbt index 8aeb794..d894a8d 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -1,5 +1,5 @@ val sbtTypelevelVersion = "0.4.16" // https://github.com/typelevel/sbt-typelevel/releases -val sbtScoverageVersion = "2.0.4" // https://github.com/scoverage/sbt-scoverage/releases +val sbtScoverageVersion = "2.0.6" // https://github.com/scoverage/sbt-scoverage/releases addSbtPlugin("org.typelevel" % "sbt-typelevel" % sbtTypelevelVersion) addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % sbtTypelevelVersion) From 461737c26bc3db8563970efcf05c14bd62f7de20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Mon, 24 Oct 2022 14:02:41 +0300 Subject: [PATCH 46/50] Update docs/README.md Co-authored-by: Arman Bilge --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 1ac01ba..2dc4843 100644 --- a/docs/README.md +++ b/docs/README.md @@ -21,7 +21,7 @@ Triggers automatically. Use on all published `circe` modules. * Activates the sensible defaults of [sbt-typelevel](https://github.com/typelevel/sbt-typelevel/) * Sets the organization info * Enables automated license headers with appropriate years -* Enables [sbt-github-actions](https://github.com/djspiewak/sbt-github-actions) with settings appropriate to our +* Enables [sbt-github-actions](https://typelevel.org/sbt-typelevel/gha.html) with settings appropriate to our workflow * by default does not run code coverage in all `io.circe.examples.*` packages From 01bb43d3231e7b78b82827da2749208ac8267c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Mon, 24 Oct 2022 14:02:56 +0300 Subject: [PATCH 47/50] bump sbt to 1.7.2 Co-authored-by: Arman Bilge --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index 22af262..563a014 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.7.1 +sbt.version=1.7.2 From 8802c1ea81c4ae37f8c10eaf3b63aa4de954a2a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Mon, 24 Oct 2022 14:03:21 +0300 Subject: [PATCH 48/50] Fix typo Co-authored-by: Arman Bilge --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index bb10c0a..830599d 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,7 @@ lazy val `sbt-circe-org` = project.in(file(".")).enablePlugins(NoPublishPlugin).aggregate(core) -// we're not doing code coverage on this plugin. Set to Some("sbt-circe-io") if you wish to run it. +// we're not doing code coverage on this plugin. Set to Some("sbt-circe-org") if you wish to run it. ThisBuild / circeRootOfCodeCoverage := None ThisBuild / tlCiScalafixCheck := true From 5113b3771c01b95ab69cdc3df928e90b079a4aba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 25 Oct 2022 11:27:55 +0300 Subject: [PATCH 49/50] Add scala native auto plugin --- core/build.sbt | 2 + .../circe/sbt/CirceOrgScalaNativePlugin.scala | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 core/src/main/scala/io/circe/sbt/CirceOrgScalaNativePlugin.scala diff --git a/core/build.sbt b/core/build.sbt index d894a8d..0a18b18 100644 --- a/core/build.sbt +++ b/core/build.sbt @@ -1,7 +1,9 @@ val sbtTypelevelVersion = "0.4.16" // https://github.com/typelevel/sbt-typelevel/releases val sbtScoverageVersion = "2.0.6" // https://github.com/scoverage/sbt-scoverage/releases +val sbtScalaNativeVersion = "0.4.7" // https://github.com/scala-native/scala-native/releases addSbtPlugin("org.typelevel" % "sbt-typelevel" % sbtTypelevelVersion) addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % sbtTypelevelVersion) addSbtPlugin("org.typelevel" % "sbt-typelevel-scalafix" % sbtTypelevelVersion) +addSbtPlugin("org.scala-native" % "sbt-scala-native" % sbtScalaNativeVersion) addSbtPlugin("org.scoverage" % "sbt-scoverage" % sbtScoverageVersion) diff --git a/core/src/main/scala/io/circe/sbt/CirceOrgScalaNativePlugin.scala b/core/src/main/scala/io/circe/sbt/CirceOrgScalaNativePlugin.scala new file mode 100644 index 0000000..18fb0f3 --- /dev/null +++ b/core/src/main/scala/io/circe/sbt/CirceOrgScalaNativePlugin.scala @@ -0,0 +1,37 @@ +/* + * Copyright 2022 circe + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.circe.sbt + +/** + * automatically loaded for all projects that are cross-compiled to ScalaJS, no need too reference it explicitly in builds + */ +import sbt.* +import scoverage.ScoverageSbtPlugin.autoImport._ + +import scala.scalanative.sbtplugin.ScalaNativePlugin + +object CirceOrgScalaNativePlugin extends AutoPlugin { + + override def trigger = allRequirements + + override def requires: Plugins = CirceOrgPlugin && ScalaNativePlugin + + override def projectSettings: Seq[Setting[_]] = Seq( + coverageEnabled := false + ) + +} From 0a462b2465de05f5e758c14b130fd97f31b74c1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Tue, 25 Oct 2022 11:33:20 +0300 Subject: [PATCH 50/50] Move code coverage opinionated settings to build settings --- core/src/main/scala/io/circe/sbt/CirceOrgPlugin.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/io/circe/sbt/CirceOrgPlugin.scala b/core/src/main/scala/io/circe/sbt/CirceOrgPlugin.scala index 9ca06dc..e3f803b 100644 --- a/core/src/main/scala/io/circe/sbt/CirceOrgPlugin.scala +++ b/core/src/main/scala/io/circe/sbt/CirceOrgPlugin.scala @@ -43,9 +43,11 @@ object CirceOrgPlugin extends AutoPlugin { override def requires: Plugins = TypelevelPlugin && ScoverageSbtPlugin override def buildSettings: Seq[Setting[_]] = - publishSettings ++ organizationSettings ++ scalafixSettings ++ githubActionsSettings + codeCoverageSettings ++ publishSettings ++ organizationSettings ++ scalafixSettings ++ githubActionsSettings - override def projectSettings = Seq( + override def projectSettings: Seq[Setting[_]] = Seq.empty + + lazy val codeCoverageSettings: Seq[Setting[_]] = Seq( coverageHighlighting := true, coverageExcludedPackages := "io.circe.examples.*" )