diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/flake.nix b/flake.nix index 4628332..c75d729 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ in { devShell = with pkgs; mkShell { - buildInputs = [ jre ammonite coursier bloop sbt scalafmt ]; + buildInputs = [ jre ammonite coursier sbt scalafmt ]; }; }); } diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/flake.nix b/flake.nix index 4628332..c75d729 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ in { devShell = with pkgs; mkShell { - buildInputs = [ jre ammonite coursier bloop sbt scalafmt ]; + buildInputs = [ jre ammonite coursier sbt scalafmt ]; }; }); } diff --git a/project/build.properties b/project/build.properties index 3040987..081fdbb 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.4 +sbt.version=1.10.0 diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/flake.nix b/flake.nix index 4628332..c75d729 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ in { devShell = with pkgs; mkShell { - buildInputs = [ jre ammonite coursier bloop sbt scalafmt ]; + buildInputs = [ jre ammonite coursier sbt scalafmt ]; }; }); } diff --git a/project/build.properties b/project/build.properties index 3040987..081fdbb 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.4 +sbt.version=1.10.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index 05e961b..7b953bd 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ addSbtPlugin("org.foundweekends.giter8" %% "sbt-giter8" % "0.16.2") -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") -addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1") libraryDependencies += { - "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value + "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value } -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") \ No newline at end of file +addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/flake.nix b/flake.nix index 4628332..c75d729 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ in { devShell = with pkgs; mkShell { - buildInputs = [ jre ammonite coursier bloop sbt scalafmt ]; + buildInputs = [ jre ammonite coursier sbt scalafmt ]; }; }); } diff --git a/project/build.properties b/project/build.properties index 3040987..081fdbb 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.4 +sbt.version=1.10.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index 05e961b..7b953bd 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ addSbtPlugin("org.foundweekends.giter8" %% "sbt-giter8" % "0.16.2") -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") -addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1") libraryDependencies += { - "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value + "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value } -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") \ No newline at end of file +addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") diff --git a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala index 705f1c1..d62b504 100644 --- a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala +++ b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala @@ -1,82 +1,72 @@ package works.iterative.sbt -import sbt._ -import sbt.Keys._ +import sbt.* +import sbt.Keys.* object IWPluginPresets extends AutoPlugin { - override def trigger = allRequirements + override def trigger = allRequirements - val scalaJSCrossprojectVersion = "1.3.2" + val scalaJSCrossprojectVersion = "1.3.2" - object autoImport { - val addIWProjects: Seq[Def.Setting[_]] = Seq( - addSbtPlugin( - "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version - ), - resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", - resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" - ) - val addScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.21.1") - val addWebScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-web-scalajs-bundler" % "0.21.1") - val addWebScalaJS: Def.Setting[_] = - addSbtPlugin("com.vmunier" % "sbt-web-scalajs" % "1.2.0") - val addScalablyTypedConverter: Def.Setting[_] = - addSbtPlugin( - "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta42" - ) - val addTzdb: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0") - val addLocales: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0") - val addScalaJS: Def.Setting[_] = - addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.14.0") - val addScalaJSCrossproject: Def.Setting[_] = - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion - ) - val addSbtScalaJSMap: Def.Setting[_] = - addSbtPlugin( - "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" - ) - val addScalaJSSupport: Seq[Def.Setting[_]] = Seq( - // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest - // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x - evictionErrorLevel := Level.Warn, - addScalaJS, - addScalaJSCrossproject, - addTzdb, - addLocales, - addScalablyTypedConverter - ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo - Seq(addSbtScalaJSMap) - } else { - Seq.empty - }) - val addLagom: Def.Setting[_] = - addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") - val addPlay: Def.Setting[_] = - addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") - val addDockerCompose: Def.Setting[_] = - addSbtPlugin("com.tapad" % "sbt-docker-compose" % "1.0.35") - val addPlaySupport: Seq[Def.Setting[_]] = Seq( - addPlay, - addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.2"), - addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.4") - ) - } + object autoImport { + val addIWProjects: Seq[Def.Setting[?]] = Seq( + addSbtPlugin( + "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version + ), + resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", + resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" + ) + val addScalablyTypedConverter: Def.Setting[?] = + addSbtPlugin( + "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta44" + ) + val addTzdb: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0") + val addLocales: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0") + val addScalaJS: Def.Setting[?] = + addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0") + val addScalaJSCrossproject: Def.Setting[?] = + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) + val addSbtScalaJSMap: Def.Setting[?] = + addSbtPlugin( + "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" + ) + val addScalaJSSupport: Seq[Def.Setting[?]] = Seq( + // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest + // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x + evictionErrorLevel := Level.Warn, + addScalaJS, + addScalaJSCrossproject, + addTzdb, + addLocales, + addScalablyTypedConverter + ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo + Seq(addSbtScalaJSMap) + } else Seq.empty) + val addLagom: Def.Setting[?] = + addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") + val addPlay: Def.Setting[?] = + addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") + val addPlaySupport: Seq[Def.Setting[?]] = Seq( + addPlay, + addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "2.0.0"), + addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "2.0.0") + ) + } - override def projectSettings: Seq[Def.Setting[_]] = Seq( - addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0"), - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), - addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16"), - addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.11.1"), - addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0"), - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + override def projectSettings: Seq[Def.Setting[?]] = Seq( + addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1"), + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.10.0"), + addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0"), + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) ) - ) } diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/flake.nix b/flake.nix index 4628332..c75d729 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ in { devShell = with pkgs; mkShell { - buildInputs = [ jre ammonite coursier bloop sbt scalafmt ]; + buildInputs = [ jre ammonite coursier sbt scalafmt ]; }; }); } diff --git a/project/build.properties b/project/build.properties index 3040987..081fdbb 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.4 +sbt.version=1.10.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index 05e961b..7b953bd 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ addSbtPlugin("org.foundweekends.giter8" %% "sbt-giter8" % "0.16.2") -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") -addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1") libraryDependencies += { - "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value + "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value } -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") \ No newline at end of file +addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") diff --git a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala index 705f1c1..d62b504 100644 --- a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala +++ b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala @@ -1,82 +1,72 @@ package works.iterative.sbt -import sbt._ -import sbt.Keys._ +import sbt.* +import sbt.Keys.* object IWPluginPresets extends AutoPlugin { - override def trigger = allRequirements + override def trigger = allRequirements - val scalaJSCrossprojectVersion = "1.3.2" + val scalaJSCrossprojectVersion = "1.3.2" - object autoImport { - val addIWProjects: Seq[Def.Setting[_]] = Seq( - addSbtPlugin( - "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version - ), - resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", - resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" - ) - val addScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.21.1") - val addWebScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-web-scalajs-bundler" % "0.21.1") - val addWebScalaJS: Def.Setting[_] = - addSbtPlugin("com.vmunier" % "sbt-web-scalajs" % "1.2.0") - val addScalablyTypedConverter: Def.Setting[_] = - addSbtPlugin( - "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta42" - ) - val addTzdb: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0") - val addLocales: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0") - val addScalaJS: Def.Setting[_] = - addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.14.0") - val addScalaJSCrossproject: Def.Setting[_] = - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion - ) - val addSbtScalaJSMap: Def.Setting[_] = - addSbtPlugin( - "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" - ) - val addScalaJSSupport: Seq[Def.Setting[_]] = Seq( - // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest - // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x - evictionErrorLevel := Level.Warn, - addScalaJS, - addScalaJSCrossproject, - addTzdb, - addLocales, - addScalablyTypedConverter - ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo - Seq(addSbtScalaJSMap) - } else { - Seq.empty - }) - val addLagom: Def.Setting[_] = - addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") - val addPlay: Def.Setting[_] = - addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") - val addDockerCompose: Def.Setting[_] = - addSbtPlugin("com.tapad" % "sbt-docker-compose" % "1.0.35") - val addPlaySupport: Seq[Def.Setting[_]] = Seq( - addPlay, - addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.2"), - addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.4") - ) - } + object autoImport { + val addIWProjects: Seq[Def.Setting[?]] = Seq( + addSbtPlugin( + "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version + ), + resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", + resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" + ) + val addScalablyTypedConverter: Def.Setting[?] = + addSbtPlugin( + "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta44" + ) + val addTzdb: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0") + val addLocales: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0") + val addScalaJS: Def.Setting[?] = + addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0") + val addScalaJSCrossproject: Def.Setting[?] = + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) + val addSbtScalaJSMap: Def.Setting[?] = + addSbtPlugin( + "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" + ) + val addScalaJSSupport: Seq[Def.Setting[?]] = Seq( + // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest + // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x + evictionErrorLevel := Level.Warn, + addScalaJS, + addScalaJSCrossproject, + addTzdb, + addLocales, + addScalablyTypedConverter + ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo + Seq(addSbtScalaJSMap) + } else Seq.empty) + val addLagom: Def.Setting[?] = + addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") + val addPlay: Def.Setting[?] = + addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") + val addPlaySupport: Seq[Def.Setting[?]] = Seq( + addPlay, + addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "2.0.0"), + addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "2.0.0") + ) + } - override def projectSettings: Seq[Def.Setting[_]] = Seq( - addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0"), - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), - addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16"), - addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.11.1"), - addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0"), - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + override def projectSettings: Seq[Def.Setting[?]] = Seq( + addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1"), + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.10.0"), + addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0"), + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) ) - ) } diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala index 5a84c67..03b843e 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala @@ -59,9 +59,10 @@ lazy val zioNIO: Def.Setting[_] = zioLib("nio", V.zioNIO) lazy val zioOptics: Def.Setting[_] = zioLib("optics", V.zioOptics) lazy val zioQuery: Def.Setting[_] = zioLib("query", V.zioQuery) + lazy val zioCli: Def.Setting[_] = zioLib("cli", V.zioCli) lazy val quill: Def.Setting[_] = - libraryDependencies += "io.getquill" %% "quill-caliban" % V.quill + libraryDependencies += "io.getquill" %% "quill-jdbc-zio" % V.quill lazy val zioSchema: Def.Setting[_] = zioLib("schema", V.zioSchema) @@ -128,11 +129,20 @@ lazy val tapirCats: Def.Setting[_] = tapirLib("cats") lazy val tapirZIOHttp4sServer: Def.Setting[_] = tapirLib("http4s-server-zio") - private val sttpClientOrg = "com.softwaremill.sttp.client3" - def sttpClientLib(name: String): Def.Setting[_] = - libraryDependencies += sttpClientOrg %%% name % V.sttpClient + private val sttpClient3Org = "com.softwaremill.sttp.client3" + def sttpClient3Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient3Org %%% name % V.sttpClient3 - lazy val sttpClientCore: Def.Setting[_] = sttpClientLib("core") + lazy val sttpClient3Core: Def.Setting[_] = sttpClientLib("core") + + private val sttpClient4Org = "com.softwaremill.sttp.client4" + def sttpClient4Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient4Org %%% name % V.sttpClient4 + + lazy val sttpClient4Core: Def.Setting[_] = sttpClient4Lib("core") + + lazy val sttpClientCore: Def.Setting[_] = sttpClient3Core + def sttpClientLib(name: String): Def.Setting[_] = sttpClient3Lib(name) lazy val http4sBlazeServer: Def.Setting[_] = libraryDependencies += "org.http4s" %% "http4s-blaze-server" % V.http4sBlaze @@ -171,6 +181,12 @@ elastic4sOrg %% "elastic4s-json-play" % V.elastic4s ) + lazy val ducktape: Def.Setting[_] = + libraryDependencies += "io.github.arainko" %%% "ducktape" % V.ducktape + + lazy val chimney: Def.Setting[_] = + libraryDependencies += "io.scalaland" %% "chimney" % V.chimney + lazy val laminar: Def.Setting[_] = libraryDependencies += "com.raquo" %%% "laminar" % V.laminar @@ -193,7 +209,7 @@ libraryDependencies += "io.github.cquiroz" %%% "scala-java-time" % "2.5.0" lazy val addScalaJavaLocales: Def.Setting[_] = - libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.1" + libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.3" def useScalaJavaTimeAndLocales(proj: Project): Project = proj diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/flake.nix b/flake.nix index 4628332..c75d729 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ in { devShell = with pkgs; mkShell { - buildInputs = [ jre ammonite coursier bloop sbt scalafmt ]; + buildInputs = [ jre ammonite coursier sbt scalafmt ]; }; }); } diff --git a/project/build.properties b/project/build.properties index 3040987..081fdbb 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.4 +sbt.version=1.10.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index 05e961b..7b953bd 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ addSbtPlugin("org.foundweekends.giter8" %% "sbt-giter8" % "0.16.2") -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") -addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1") libraryDependencies += { - "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value + "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value } -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") \ No newline at end of file +addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") diff --git a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala index 705f1c1..d62b504 100644 --- a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala +++ b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala @@ -1,82 +1,72 @@ package works.iterative.sbt -import sbt._ -import sbt.Keys._ +import sbt.* +import sbt.Keys.* object IWPluginPresets extends AutoPlugin { - override def trigger = allRequirements + override def trigger = allRequirements - val scalaJSCrossprojectVersion = "1.3.2" + val scalaJSCrossprojectVersion = "1.3.2" - object autoImport { - val addIWProjects: Seq[Def.Setting[_]] = Seq( - addSbtPlugin( - "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version - ), - resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", - resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" - ) - val addScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.21.1") - val addWebScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-web-scalajs-bundler" % "0.21.1") - val addWebScalaJS: Def.Setting[_] = - addSbtPlugin("com.vmunier" % "sbt-web-scalajs" % "1.2.0") - val addScalablyTypedConverter: Def.Setting[_] = - addSbtPlugin( - "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta42" - ) - val addTzdb: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0") - val addLocales: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0") - val addScalaJS: Def.Setting[_] = - addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.14.0") - val addScalaJSCrossproject: Def.Setting[_] = - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion - ) - val addSbtScalaJSMap: Def.Setting[_] = - addSbtPlugin( - "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" - ) - val addScalaJSSupport: Seq[Def.Setting[_]] = Seq( - // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest - // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x - evictionErrorLevel := Level.Warn, - addScalaJS, - addScalaJSCrossproject, - addTzdb, - addLocales, - addScalablyTypedConverter - ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo - Seq(addSbtScalaJSMap) - } else { - Seq.empty - }) - val addLagom: Def.Setting[_] = - addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") - val addPlay: Def.Setting[_] = - addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") - val addDockerCompose: Def.Setting[_] = - addSbtPlugin("com.tapad" % "sbt-docker-compose" % "1.0.35") - val addPlaySupport: Seq[Def.Setting[_]] = Seq( - addPlay, - addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.2"), - addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.4") - ) - } + object autoImport { + val addIWProjects: Seq[Def.Setting[?]] = Seq( + addSbtPlugin( + "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version + ), + resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", + resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" + ) + val addScalablyTypedConverter: Def.Setting[?] = + addSbtPlugin( + "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta44" + ) + val addTzdb: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0") + val addLocales: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0") + val addScalaJS: Def.Setting[?] = + addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0") + val addScalaJSCrossproject: Def.Setting[?] = + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) + val addSbtScalaJSMap: Def.Setting[?] = + addSbtPlugin( + "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" + ) + val addScalaJSSupport: Seq[Def.Setting[?]] = Seq( + // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest + // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x + evictionErrorLevel := Level.Warn, + addScalaJS, + addScalaJSCrossproject, + addTzdb, + addLocales, + addScalablyTypedConverter + ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo + Seq(addSbtScalaJSMap) + } else Seq.empty) + val addLagom: Def.Setting[?] = + addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") + val addPlay: Def.Setting[?] = + addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") + val addPlaySupport: Seq[Def.Setting[?]] = Seq( + addPlay, + addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "2.0.0"), + addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "2.0.0") + ) + } - override def projectSettings: Seq[Def.Setting[_]] = Seq( - addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0"), - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), - addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16"), - addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.11.1"), - addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0"), - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + override def projectSettings: Seq[Def.Setting[?]] = Seq( + addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1"), + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.10.0"), + addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0"), + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) ) - ) } diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala index 5a84c67..03b843e 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala @@ -59,9 +59,10 @@ lazy val zioNIO: Def.Setting[_] = zioLib("nio", V.zioNIO) lazy val zioOptics: Def.Setting[_] = zioLib("optics", V.zioOptics) lazy val zioQuery: Def.Setting[_] = zioLib("query", V.zioQuery) + lazy val zioCli: Def.Setting[_] = zioLib("cli", V.zioCli) lazy val quill: Def.Setting[_] = - libraryDependencies += "io.getquill" %% "quill-caliban" % V.quill + libraryDependencies += "io.getquill" %% "quill-jdbc-zio" % V.quill lazy val zioSchema: Def.Setting[_] = zioLib("schema", V.zioSchema) @@ -128,11 +129,20 @@ lazy val tapirCats: Def.Setting[_] = tapirLib("cats") lazy val tapirZIOHttp4sServer: Def.Setting[_] = tapirLib("http4s-server-zio") - private val sttpClientOrg = "com.softwaremill.sttp.client3" - def sttpClientLib(name: String): Def.Setting[_] = - libraryDependencies += sttpClientOrg %%% name % V.sttpClient + private val sttpClient3Org = "com.softwaremill.sttp.client3" + def sttpClient3Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient3Org %%% name % V.sttpClient3 - lazy val sttpClientCore: Def.Setting[_] = sttpClientLib("core") + lazy val sttpClient3Core: Def.Setting[_] = sttpClientLib("core") + + private val sttpClient4Org = "com.softwaremill.sttp.client4" + def sttpClient4Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient4Org %%% name % V.sttpClient4 + + lazy val sttpClient4Core: Def.Setting[_] = sttpClient4Lib("core") + + lazy val sttpClientCore: Def.Setting[_] = sttpClient3Core + def sttpClientLib(name: String): Def.Setting[_] = sttpClient3Lib(name) lazy val http4sBlazeServer: Def.Setting[_] = libraryDependencies += "org.http4s" %% "http4s-blaze-server" % V.http4sBlaze @@ -171,6 +181,12 @@ elastic4sOrg %% "elastic4s-json-play" % V.elastic4s ) + lazy val ducktape: Def.Setting[_] = + libraryDependencies += "io.github.arainko" %%% "ducktape" % V.ducktape + + lazy val chimney: Def.Setting[_] = + libraryDependencies += "io.scalaland" %% "chimney" % V.chimney + lazy val laminar: Def.Setting[_] = libraryDependencies += "com.raquo" %%% "laminar" % V.laminar @@ -193,7 +209,7 @@ libraryDependencies += "io.github.cquiroz" %%% "scala-java-time" % "2.5.0" lazy val addScalaJavaLocales: Def.Setting[_] = - libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.1" + libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.3" def useScalaJavaTimeAndLocales(proj: Project): Project = proj diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala index 6ef5597..657b9a3 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala @@ -1,39 +1,43 @@ package works.iterative.sbt object IWMaterialsVersions { - val akka = "2.6.18" - val akkaHttp = "10.4.0" - val cats = "2.9.0" - val caliban = "2.4.3" - val elastic4s = "7.12.4" - val http4s = "0.23.24" - val http4sBlaze = "0.23.15" - val http4sPac4J = "4.1.0" - val laminar = "16.0.0" - val laminext = "0.16.2" - val logbackClassic = "1.4.8" - val pac4j = "5.4.2" - val play = "2.8.18" - val playJson = "2.9.3" - val quill = "4.7.3" - val scalaJsMacroTaskExecutor = "1.1.1" - val scalaJsJavaSecureRandom = "1.0.0" - val scalaTest = "3.2.14" - val slick = "3.3.3" - val sttpClient = "3.8.16" - val support = "1.7.0" - val tapir = "1.9.2" - val urlDsl = "0.6.0" - val waypoint = "7.0.0" - val zio = "2.0.19" - val zioConfig = "3.0.7" - val zioInteropCats = "23.1.0.0" - val zioInteropReactiveStreams = "2.0.2" - val zioJson = "0.6.2" - val zioLogging = "2.1.16" - val zioNIO = "2.0.2" - val zioOptics = "0.2.1" - val zioPrelude = "1.0.0-RC21" - val zioQuery = "0.5.1" - val zioSchema = "0.4.16" + val akka = "2.6.18" + val akkaHttp = "10.4.0" + val cats = "2.10.0" + val caliban = "2.6.0" + val chimney = "0.8.5" + val ducktape = "0.2.1" + val elastic4s = "7.12.4" + val http4s = "0.23.27" + val http4sBlaze = "0.23.16" + val http4sPac4J = "4.1.0" + val laminar = "17.0.0" + val laminext = "0.17.0" + val logbackClassic = "1.5.6" + val pac4j = "5.4.2" + val play = "2.8.18" + val playJson = "2.9.3" + val quill = "4.8.4" + val scalaJsMacroTaskExecutor = "1.1.1" + val scalaJsJavaSecureRandom = "1.0.0" + val scalaTest = "3.2.14" + val slick = "3.3.3" + val sttpClient3 = "3.9.7" + val sttpClient4 = "4.0.0-M14" + val support = "1.7.0" + val tapir = "1.10.7" + val urlDsl = "0.6.1" + val waypoint = "8.0.0" + val zio = "2.1.1" + val zioConfig = "4.0.2" + val zioCli = "0.5.0" + val zioInteropCats = "23.1.0.2" + val zioInteropReactiveStreams = "2.0.2" + val zioJson = "0.6.2" + val zioLogging = "2.2.4" + val zioNIO = "2.0.2" + val zioOptics = "0.2.1" + val zioPrelude = "1.0.0-RC26" + val zioQuery = "0.7.1" + val zioSchema = "1.1.1" } diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/flake.nix b/flake.nix index 4628332..c75d729 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ in { devShell = with pkgs; mkShell { - buildInputs = [ jre ammonite coursier bloop sbt scalafmt ]; + buildInputs = [ jre ammonite coursier sbt scalafmt ]; }; }); } diff --git a/project/build.properties b/project/build.properties index 3040987..081fdbb 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.4 +sbt.version=1.10.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index 05e961b..7b953bd 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ addSbtPlugin("org.foundweekends.giter8" %% "sbt-giter8" % "0.16.2") -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") -addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1") libraryDependencies += { - "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value + "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value } -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") \ No newline at end of file +addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") diff --git a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala index 705f1c1..d62b504 100644 --- a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala +++ b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala @@ -1,82 +1,72 @@ package works.iterative.sbt -import sbt._ -import sbt.Keys._ +import sbt.* +import sbt.Keys.* object IWPluginPresets extends AutoPlugin { - override def trigger = allRequirements + override def trigger = allRequirements - val scalaJSCrossprojectVersion = "1.3.2" + val scalaJSCrossprojectVersion = "1.3.2" - object autoImport { - val addIWProjects: Seq[Def.Setting[_]] = Seq( - addSbtPlugin( - "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version - ), - resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", - resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" - ) - val addScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.21.1") - val addWebScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-web-scalajs-bundler" % "0.21.1") - val addWebScalaJS: Def.Setting[_] = - addSbtPlugin("com.vmunier" % "sbt-web-scalajs" % "1.2.0") - val addScalablyTypedConverter: Def.Setting[_] = - addSbtPlugin( - "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta42" - ) - val addTzdb: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0") - val addLocales: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0") - val addScalaJS: Def.Setting[_] = - addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.14.0") - val addScalaJSCrossproject: Def.Setting[_] = - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion - ) - val addSbtScalaJSMap: Def.Setting[_] = - addSbtPlugin( - "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" - ) - val addScalaJSSupport: Seq[Def.Setting[_]] = Seq( - // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest - // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x - evictionErrorLevel := Level.Warn, - addScalaJS, - addScalaJSCrossproject, - addTzdb, - addLocales, - addScalablyTypedConverter - ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo - Seq(addSbtScalaJSMap) - } else { - Seq.empty - }) - val addLagom: Def.Setting[_] = - addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") - val addPlay: Def.Setting[_] = - addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") - val addDockerCompose: Def.Setting[_] = - addSbtPlugin("com.tapad" % "sbt-docker-compose" % "1.0.35") - val addPlaySupport: Seq[Def.Setting[_]] = Seq( - addPlay, - addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.2"), - addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.4") - ) - } + object autoImport { + val addIWProjects: Seq[Def.Setting[?]] = Seq( + addSbtPlugin( + "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version + ), + resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", + resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" + ) + val addScalablyTypedConverter: Def.Setting[?] = + addSbtPlugin( + "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta44" + ) + val addTzdb: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0") + val addLocales: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0") + val addScalaJS: Def.Setting[?] = + addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0") + val addScalaJSCrossproject: Def.Setting[?] = + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) + val addSbtScalaJSMap: Def.Setting[?] = + addSbtPlugin( + "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" + ) + val addScalaJSSupport: Seq[Def.Setting[?]] = Seq( + // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest + // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x + evictionErrorLevel := Level.Warn, + addScalaJS, + addScalaJSCrossproject, + addTzdb, + addLocales, + addScalablyTypedConverter + ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo + Seq(addSbtScalaJSMap) + } else Seq.empty) + val addLagom: Def.Setting[?] = + addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") + val addPlay: Def.Setting[?] = + addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") + val addPlaySupport: Seq[Def.Setting[?]] = Seq( + addPlay, + addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "2.0.0"), + addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "2.0.0") + ) + } - override def projectSettings: Seq[Def.Setting[_]] = Seq( - addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0"), - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), - addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16"), - addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.11.1"), - addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0"), - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + override def projectSettings: Seq[Def.Setting[?]] = Seq( + addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1"), + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.10.0"), + addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0"), + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) ) - ) } diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala index 5a84c67..03b843e 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala @@ -59,9 +59,10 @@ lazy val zioNIO: Def.Setting[_] = zioLib("nio", V.zioNIO) lazy val zioOptics: Def.Setting[_] = zioLib("optics", V.zioOptics) lazy val zioQuery: Def.Setting[_] = zioLib("query", V.zioQuery) + lazy val zioCli: Def.Setting[_] = zioLib("cli", V.zioCli) lazy val quill: Def.Setting[_] = - libraryDependencies += "io.getquill" %% "quill-caliban" % V.quill + libraryDependencies += "io.getquill" %% "quill-jdbc-zio" % V.quill lazy val zioSchema: Def.Setting[_] = zioLib("schema", V.zioSchema) @@ -128,11 +129,20 @@ lazy val tapirCats: Def.Setting[_] = tapirLib("cats") lazy val tapirZIOHttp4sServer: Def.Setting[_] = tapirLib("http4s-server-zio") - private val sttpClientOrg = "com.softwaremill.sttp.client3" - def sttpClientLib(name: String): Def.Setting[_] = - libraryDependencies += sttpClientOrg %%% name % V.sttpClient + private val sttpClient3Org = "com.softwaremill.sttp.client3" + def sttpClient3Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient3Org %%% name % V.sttpClient3 - lazy val sttpClientCore: Def.Setting[_] = sttpClientLib("core") + lazy val sttpClient3Core: Def.Setting[_] = sttpClientLib("core") + + private val sttpClient4Org = "com.softwaremill.sttp.client4" + def sttpClient4Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient4Org %%% name % V.sttpClient4 + + lazy val sttpClient4Core: Def.Setting[_] = sttpClient4Lib("core") + + lazy val sttpClientCore: Def.Setting[_] = sttpClient3Core + def sttpClientLib(name: String): Def.Setting[_] = sttpClient3Lib(name) lazy val http4sBlazeServer: Def.Setting[_] = libraryDependencies += "org.http4s" %% "http4s-blaze-server" % V.http4sBlaze @@ -171,6 +181,12 @@ elastic4sOrg %% "elastic4s-json-play" % V.elastic4s ) + lazy val ducktape: Def.Setting[_] = + libraryDependencies += "io.github.arainko" %%% "ducktape" % V.ducktape + + lazy val chimney: Def.Setting[_] = + libraryDependencies += "io.scalaland" %% "chimney" % V.chimney + lazy val laminar: Def.Setting[_] = libraryDependencies += "com.raquo" %%% "laminar" % V.laminar @@ -193,7 +209,7 @@ libraryDependencies += "io.github.cquiroz" %%% "scala-java-time" % "2.5.0" lazy val addScalaJavaLocales: Def.Setting[_] = - libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.1" + libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.3" def useScalaJavaTimeAndLocales(proj: Project): Project = proj diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala index 6ef5597..657b9a3 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala @@ -1,39 +1,43 @@ package works.iterative.sbt object IWMaterialsVersions { - val akka = "2.6.18" - val akkaHttp = "10.4.0" - val cats = "2.9.0" - val caliban = "2.4.3" - val elastic4s = "7.12.4" - val http4s = "0.23.24" - val http4sBlaze = "0.23.15" - val http4sPac4J = "4.1.0" - val laminar = "16.0.0" - val laminext = "0.16.2" - val logbackClassic = "1.4.8" - val pac4j = "5.4.2" - val play = "2.8.18" - val playJson = "2.9.3" - val quill = "4.7.3" - val scalaJsMacroTaskExecutor = "1.1.1" - val scalaJsJavaSecureRandom = "1.0.0" - val scalaTest = "3.2.14" - val slick = "3.3.3" - val sttpClient = "3.8.16" - val support = "1.7.0" - val tapir = "1.9.2" - val urlDsl = "0.6.0" - val waypoint = "7.0.0" - val zio = "2.0.19" - val zioConfig = "3.0.7" - val zioInteropCats = "23.1.0.0" - val zioInteropReactiveStreams = "2.0.2" - val zioJson = "0.6.2" - val zioLogging = "2.1.16" - val zioNIO = "2.0.2" - val zioOptics = "0.2.1" - val zioPrelude = "1.0.0-RC21" - val zioQuery = "0.5.1" - val zioSchema = "0.4.16" + val akka = "2.6.18" + val akkaHttp = "10.4.0" + val cats = "2.10.0" + val caliban = "2.6.0" + val chimney = "0.8.5" + val ducktape = "0.2.1" + val elastic4s = "7.12.4" + val http4s = "0.23.27" + val http4sBlaze = "0.23.16" + val http4sPac4J = "4.1.0" + val laminar = "17.0.0" + val laminext = "0.17.0" + val logbackClassic = "1.5.6" + val pac4j = "5.4.2" + val play = "2.8.18" + val playJson = "2.9.3" + val quill = "4.8.4" + val scalaJsMacroTaskExecutor = "1.1.1" + val scalaJsJavaSecureRandom = "1.0.0" + val scalaTest = "3.2.14" + val slick = "3.3.3" + val sttpClient3 = "3.9.7" + val sttpClient4 = "4.0.0-M14" + val support = "1.7.0" + val tapir = "1.10.7" + val urlDsl = "0.6.1" + val waypoint = "8.0.0" + val zio = "2.1.1" + val zioConfig = "4.0.2" + val zioCli = "0.5.0" + val zioInteropCats = "23.1.0.2" + val zioInteropReactiveStreams = "2.0.2" + val zioJson = "0.6.2" + val zioLogging = "2.2.4" + val zioNIO = "2.0.2" + val zioOptics = "0.2.1" + val zioPrelude = "1.0.0-RC26" + val zioQuery = "0.7.1" + val zioSchema = "1.1.1" } diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala index ff5517d..e5b14c4 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala @@ -1,66 +1,67 @@ package works.iterative.sbt -import sbt._ -import sbt.Keys._ +import sbt.* +import sbt.Keys.* import scalafix.sbt.ScalafixPlugin -import scalafix.sbt.ScalafixPlugin.autoImport._ +import scalafix.sbt.ScalafixPlugin.autoImport.* import org.scalafmt.sbt.ScalafmtPlugin -import org.scalafmt.sbt.ScalafmtPlugin.autoImport._ +import org.scalafmt.sbt.ScalafmtPlugin.autoImport.* object IWScalaProjectPlugin extends AutoPlugin { - override def requires: Plugins = ScalafixPlugin && ScalafmtPlugin + override def requires: Plugins = ScalafixPlugin && ScalafmtPlugin - override def trigger: PluginTrigger = allRequirements + override def trigger: PluginTrigger = allRequirements - object autoImport { - val scala2Version = "2.13.12" - val scala3Version = "3.3.1" - def publishToIW: Seq[Def.Setting[_]] = inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + object autoImport { + val scala2Version = "2.13.14" + val scala3LTSVersion = "3.3.3" + val scala3Version = "3.4.2" + def publishToIW: Seq[Def.Setting[?]] = inThisBuild( + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) { + Some("snapshots" at base + "snapshots") + } else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) + ) + def resolveIW: Seq[Def.Setting[?]] = inThisBuild( + List( + resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", + resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" + ) + ) + } + + import autoImport.* + + override def buildSettings: Seq[Def.Setting[?]] = Seq( + scalaVersion := scala3Version, + // enable SemanticDB + semanticdbEnabled := true, + // use Scalafix compatible version, + semanticdbVersion := scalafixSemanticdb.revision, + versionScheme := Some("early-semver") ) - def resolveIW: Seq[Def.Setting[_]] = inThisBuild( - List( - resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", - resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" - ) + + override def projectSettings: Seq[Def.Setting[?]] = Seq( + // Do not buffer logging in tests + Test / logBuffered := false + // Do I need this still for Metals? + // scalacOptions += s"-P:semanticdb:sourceroot:${(ThisBuild / baseDirectory).value}", + // This is not recommended, as it slows down compilation. + // scalafmtOnCompile := true ) - } - - import autoImport._ - - override def buildSettings: Seq[Def.Setting[_]] = Seq( - scalaVersion := scala3Version, - // enable SemanticDB - semanticdbEnabled := true, - // use Scalafix compatible version, - semanticdbVersion := scalafixSemanticdb.revision, - versionScheme := Some("early-semver") - ) - - override def projectSettings: Seq[Def.Setting[_]] = Seq( - // Do not buffer logging in tests - Test / logBuffered := false, - // Do I need this still for Metals? - // scalacOptions += s"-P:semanticdb:sourceroot:${(ThisBuild / baseDirectory).value}", - // This is not recommended, as it slows down compilation. - // scalafmtOnCompile := true - ) } diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/flake.nix b/flake.nix index 4628332..c75d729 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ in { devShell = with pkgs; mkShell { - buildInputs = [ jre ammonite coursier bloop sbt scalafmt ]; + buildInputs = [ jre ammonite coursier sbt scalafmt ]; }; }); } diff --git a/project/build.properties b/project/build.properties index 3040987..081fdbb 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.4 +sbt.version=1.10.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index 05e961b..7b953bd 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ addSbtPlugin("org.foundweekends.giter8" %% "sbt-giter8" % "0.16.2") -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") -addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1") libraryDependencies += { - "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value + "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value } -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") \ No newline at end of file +addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") diff --git a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala index 705f1c1..d62b504 100644 --- a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala +++ b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala @@ -1,82 +1,72 @@ package works.iterative.sbt -import sbt._ -import sbt.Keys._ +import sbt.* +import sbt.Keys.* object IWPluginPresets extends AutoPlugin { - override def trigger = allRequirements + override def trigger = allRequirements - val scalaJSCrossprojectVersion = "1.3.2" + val scalaJSCrossprojectVersion = "1.3.2" - object autoImport { - val addIWProjects: Seq[Def.Setting[_]] = Seq( - addSbtPlugin( - "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version - ), - resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", - resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" - ) - val addScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.21.1") - val addWebScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-web-scalajs-bundler" % "0.21.1") - val addWebScalaJS: Def.Setting[_] = - addSbtPlugin("com.vmunier" % "sbt-web-scalajs" % "1.2.0") - val addScalablyTypedConverter: Def.Setting[_] = - addSbtPlugin( - "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta42" - ) - val addTzdb: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0") - val addLocales: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0") - val addScalaJS: Def.Setting[_] = - addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.14.0") - val addScalaJSCrossproject: Def.Setting[_] = - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion - ) - val addSbtScalaJSMap: Def.Setting[_] = - addSbtPlugin( - "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" - ) - val addScalaJSSupport: Seq[Def.Setting[_]] = Seq( - // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest - // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x - evictionErrorLevel := Level.Warn, - addScalaJS, - addScalaJSCrossproject, - addTzdb, - addLocales, - addScalablyTypedConverter - ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo - Seq(addSbtScalaJSMap) - } else { - Seq.empty - }) - val addLagom: Def.Setting[_] = - addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") - val addPlay: Def.Setting[_] = - addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") - val addDockerCompose: Def.Setting[_] = - addSbtPlugin("com.tapad" % "sbt-docker-compose" % "1.0.35") - val addPlaySupport: Seq[Def.Setting[_]] = Seq( - addPlay, - addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.2"), - addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.4") - ) - } + object autoImport { + val addIWProjects: Seq[Def.Setting[?]] = Seq( + addSbtPlugin( + "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version + ), + resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", + resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" + ) + val addScalablyTypedConverter: Def.Setting[?] = + addSbtPlugin( + "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta44" + ) + val addTzdb: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0") + val addLocales: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0") + val addScalaJS: Def.Setting[?] = + addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0") + val addScalaJSCrossproject: Def.Setting[?] = + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) + val addSbtScalaJSMap: Def.Setting[?] = + addSbtPlugin( + "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" + ) + val addScalaJSSupport: Seq[Def.Setting[?]] = Seq( + // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest + // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x + evictionErrorLevel := Level.Warn, + addScalaJS, + addScalaJSCrossproject, + addTzdb, + addLocales, + addScalablyTypedConverter + ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo + Seq(addSbtScalaJSMap) + } else Seq.empty) + val addLagom: Def.Setting[?] = + addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") + val addPlay: Def.Setting[?] = + addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") + val addPlaySupport: Seq[Def.Setting[?]] = Seq( + addPlay, + addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "2.0.0"), + addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "2.0.0") + ) + } - override def projectSettings: Seq[Def.Setting[_]] = Seq( - addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0"), - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), - addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16"), - addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.11.1"), - addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0"), - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + override def projectSettings: Seq[Def.Setting[?]] = Seq( + addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1"), + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.10.0"), + addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0"), + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) ) - ) } diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala index 5a84c67..03b843e 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala @@ -59,9 +59,10 @@ lazy val zioNIO: Def.Setting[_] = zioLib("nio", V.zioNIO) lazy val zioOptics: Def.Setting[_] = zioLib("optics", V.zioOptics) lazy val zioQuery: Def.Setting[_] = zioLib("query", V.zioQuery) + lazy val zioCli: Def.Setting[_] = zioLib("cli", V.zioCli) lazy val quill: Def.Setting[_] = - libraryDependencies += "io.getquill" %% "quill-caliban" % V.quill + libraryDependencies += "io.getquill" %% "quill-jdbc-zio" % V.quill lazy val zioSchema: Def.Setting[_] = zioLib("schema", V.zioSchema) @@ -128,11 +129,20 @@ lazy val tapirCats: Def.Setting[_] = tapirLib("cats") lazy val tapirZIOHttp4sServer: Def.Setting[_] = tapirLib("http4s-server-zio") - private val sttpClientOrg = "com.softwaremill.sttp.client3" - def sttpClientLib(name: String): Def.Setting[_] = - libraryDependencies += sttpClientOrg %%% name % V.sttpClient + private val sttpClient3Org = "com.softwaremill.sttp.client3" + def sttpClient3Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient3Org %%% name % V.sttpClient3 - lazy val sttpClientCore: Def.Setting[_] = sttpClientLib("core") + lazy val sttpClient3Core: Def.Setting[_] = sttpClientLib("core") + + private val sttpClient4Org = "com.softwaremill.sttp.client4" + def sttpClient4Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient4Org %%% name % V.sttpClient4 + + lazy val sttpClient4Core: Def.Setting[_] = sttpClient4Lib("core") + + lazy val sttpClientCore: Def.Setting[_] = sttpClient3Core + def sttpClientLib(name: String): Def.Setting[_] = sttpClient3Lib(name) lazy val http4sBlazeServer: Def.Setting[_] = libraryDependencies += "org.http4s" %% "http4s-blaze-server" % V.http4sBlaze @@ -171,6 +181,12 @@ elastic4sOrg %% "elastic4s-json-play" % V.elastic4s ) + lazy val ducktape: Def.Setting[_] = + libraryDependencies += "io.github.arainko" %%% "ducktape" % V.ducktape + + lazy val chimney: Def.Setting[_] = + libraryDependencies += "io.scalaland" %% "chimney" % V.chimney + lazy val laminar: Def.Setting[_] = libraryDependencies += "com.raquo" %%% "laminar" % V.laminar @@ -193,7 +209,7 @@ libraryDependencies += "io.github.cquiroz" %%% "scala-java-time" % "2.5.0" lazy val addScalaJavaLocales: Def.Setting[_] = - libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.1" + libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.3" def useScalaJavaTimeAndLocales(proj: Project): Project = proj diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala index 6ef5597..657b9a3 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala @@ -1,39 +1,43 @@ package works.iterative.sbt object IWMaterialsVersions { - val akka = "2.6.18" - val akkaHttp = "10.4.0" - val cats = "2.9.0" - val caliban = "2.4.3" - val elastic4s = "7.12.4" - val http4s = "0.23.24" - val http4sBlaze = "0.23.15" - val http4sPac4J = "4.1.0" - val laminar = "16.0.0" - val laminext = "0.16.2" - val logbackClassic = "1.4.8" - val pac4j = "5.4.2" - val play = "2.8.18" - val playJson = "2.9.3" - val quill = "4.7.3" - val scalaJsMacroTaskExecutor = "1.1.1" - val scalaJsJavaSecureRandom = "1.0.0" - val scalaTest = "3.2.14" - val slick = "3.3.3" - val sttpClient = "3.8.16" - val support = "1.7.0" - val tapir = "1.9.2" - val urlDsl = "0.6.0" - val waypoint = "7.0.0" - val zio = "2.0.19" - val zioConfig = "3.0.7" - val zioInteropCats = "23.1.0.0" - val zioInteropReactiveStreams = "2.0.2" - val zioJson = "0.6.2" - val zioLogging = "2.1.16" - val zioNIO = "2.0.2" - val zioOptics = "0.2.1" - val zioPrelude = "1.0.0-RC21" - val zioQuery = "0.5.1" - val zioSchema = "0.4.16" + val akka = "2.6.18" + val akkaHttp = "10.4.0" + val cats = "2.10.0" + val caliban = "2.6.0" + val chimney = "0.8.5" + val ducktape = "0.2.1" + val elastic4s = "7.12.4" + val http4s = "0.23.27" + val http4sBlaze = "0.23.16" + val http4sPac4J = "4.1.0" + val laminar = "17.0.0" + val laminext = "0.17.0" + val logbackClassic = "1.5.6" + val pac4j = "5.4.2" + val play = "2.8.18" + val playJson = "2.9.3" + val quill = "4.8.4" + val scalaJsMacroTaskExecutor = "1.1.1" + val scalaJsJavaSecureRandom = "1.0.0" + val scalaTest = "3.2.14" + val slick = "3.3.3" + val sttpClient3 = "3.9.7" + val sttpClient4 = "4.0.0-M14" + val support = "1.7.0" + val tapir = "1.10.7" + val urlDsl = "0.6.1" + val waypoint = "8.0.0" + val zio = "2.1.1" + val zioConfig = "4.0.2" + val zioCli = "0.5.0" + val zioInteropCats = "23.1.0.2" + val zioInteropReactiveStreams = "2.0.2" + val zioJson = "0.6.2" + val zioLogging = "2.2.4" + val zioNIO = "2.0.2" + val zioOptics = "0.2.1" + val zioPrelude = "1.0.0-RC26" + val zioQuery = "0.7.1" + val zioSchema = "1.1.1" } diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala index ff5517d..e5b14c4 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala @@ -1,66 +1,67 @@ package works.iterative.sbt -import sbt._ -import sbt.Keys._ +import sbt.* +import sbt.Keys.* import scalafix.sbt.ScalafixPlugin -import scalafix.sbt.ScalafixPlugin.autoImport._ +import scalafix.sbt.ScalafixPlugin.autoImport.* import org.scalafmt.sbt.ScalafmtPlugin -import org.scalafmt.sbt.ScalafmtPlugin.autoImport._ +import org.scalafmt.sbt.ScalafmtPlugin.autoImport.* object IWScalaProjectPlugin extends AutoPlugin { - override def requires: Plugins = ScalafixPlugin && ScalafmtPlugin + override def requires: Plugins = ScalafixPlugin && ScalafmtPlugin - override def trigger: PluginTrigger = allRequirements + override def trigger: PluginTrigger = allRequirements - object autoImport { - val scala2Version = "2.13.12" - val scala3Version = "3.3.1" - def publishToIW: Seq[Def.Setting[_]] = inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + object autoImport { + val scala2Version = "2.13.14" + val scala3LTSVersion = "3.3.3" + val scala3Version = "3.4.2" + def publishToIW: Seq[Def.Setting[?]] = inThisBuild( + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) { + Some("snapshots" at base + "snapshots") + } else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) + ) + def resolveIW: Seq[Def.Setting[?]] = inThisBuild( + List( + resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", + resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" + ) + ) + } + + import autoImport.* + + override def buildSettings: Seq[Def.Setting[?]] = Seq( + scalaVersion := scala3Version, + // enable SemanticDB + semanticdbEnabled := true, + // use Scalafix compatible version, + semanticdbVersion := scalafixSemanticdb.revision, + versionScheme := Some("early-semver") ) - def resolveIW: Seq[Def.Setting[_]] = inThisBuild( - List( - resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", - resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" - ) + + override def projectSettings: Seq[Def.Setting[?]] = Seq( + // Do not buffer logging in tests + Test / logBuffered := false + // Do I need this still for Metals? + // scalacOptions += s"-P:semanticdb:sourceroot:${(ThisBuild / baseDirectory).value}", + // This is not recommended, as it slows down compilation. + // scalafmtOnCompile := true ) - } - - import autoImport._ - - override def buildSettings: Seq[Def.Setting[_]] = Seq( - scalaVersion := scala3Version, - // enable SemanticDB - semanticdbEnabled := true, - // use Scalafix compatible version, - semanticdbVersion := scalafixSemanticdb.revision, - versionScheme := Some("early-semver") - ) - - override def projectSettings: Seq[Def.Setting[_]] = Seq( - // Do not buffer logging in tests - Test / logBuffered := false, - // Do I need this still for Metals? - // scalacOptions += s"-P:semanticdb:sourceroot:${(ThisBuild / baseDirectory).value}", - // This is not recommended, as it slows down compilation. - // scalafmtOnCompile := true - ) } diff --git a/src/main/g8/.scalafmt.conf b/src/main/g8/.scalafmt.conf index d012fd1..13fa922 100644 --- a/src/main/g8/.scalafmt.conf +++ b/src/main/g8/.scalafmt.conf @@ -1,3 +1,30 @@ -version = "3.7.2" +version = "3.7.17" runner.dialect = scala3 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +# Recommended, to not penalize `match` statements +# Unfortunately, treesitter is currently not ok with that +# indent.matchSite = 0 + +newlines.source = keep +rewrite.scala3.convertToNewSyntax = true +rewrite.scala3.removeOptionalBraces = yes +rewrite.scala3.insertEndMarkerMinLines = 5 + +fileOverride { + "glob:**/*.sbt" { + runner.dialect = sbt1 + } + "glob:**/project/*.scala" { + runner.dialect = sbt1 + } +} + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/.scalafmt.conf b/.scalafmt.conf index b9e5ecf..9471d96 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,3 +1,12 @@ -version = "3.5.8" +version = "3.7.17" -runner.dialect = scala3 +runner.dialect = sbt1 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/build.sbt b/build.sbt index 6607630..07133f2 100644 --- a/build.sbt +++ b/build.sbt @@ -5,80 +5,80 @@ ThisBuild / versionScheme := Some("strict") inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) + Some("snapshots" at base + "snapshots") + else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) ) lazy val `sbt-iw-plugin-presets` = (project in file("sbt-iw-plugin-presets")) - .enablePlugins(SbtPlugin, BuildInfoPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-plugin-presets", - description := "Iterative Works SBT project plugin presets", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - buildInfoKeys := Seq[BuildInfoKey](name, version), - buildInfoPackage := "works.iterative.sbt" - ) + .enablePlugins(SbtPlugin, BuildInfoPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-plugin-presets", + description := "Iterative Works SBT project plugin presets", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + buildInfoKeys := Seq[BuildInfoKey](name, version), + buildInfoPackage := "works.iterative.sbt" + ) lazy val `sbt-iw-projects` = (project in file("sbt-iw-projects")) - .enablePlugins(SbtPlugin) - .disablePlugins(Giter8Plugin) - .settings( - organization := "works.iterative.sbt", - name := "sbt-iw-projects", - description := "Iterative Works SBT project support", - scriptedLaunchOpts := { - scriptedLaunchOpts.value ++ - Seq("-Xmx1024M", "-Dplugin.version=" + version.value) - }, - scriptedBufferLog := false, - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4"), - addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.1"), - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0"), - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") - ) + .enablePlugins(SbtPlugin) + .disablePlugins(Giter8Plugin) + .settings( + organization := "works.iterative.sbt", + name := "sbt-iw-projects", + description := "Iterative Works SBT project support", + scriptedLaunchOpts := { + scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) + }, + scriptedBufferLog := false, + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2"), + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0"), + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1") + ) lazy val `iw-project-support` = (project in file(".")) - .enablePlugins(ScriptedPlugin) - .settings( - name := "iw-project-support", - Test / test := { - val _ = (Test / g8Test).toTask("").value - }, - scriptedLaunchOpts ++= List( - "-Xms1024m", - "-Xmx1024m", - "-XX:ReservedCodeCacheSize=128m", - "-Xss2m", - "-Dfile.encoding=UTF-8" - ), - resolvers += Resolver.url( - "typesafe", - url("https://repo.typesafe.com/typesafe/ivy-releases/") - )(Resolver.ivyStylePatterns), - publish / skip := true - ) - .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) + .enablePlugins(ScriptedPlugin) + .settings( + name := "iw-project-support", + Test / test := { + val _ = (Test / g8Test).toTask("").value + }, + scriptedLaunchOpts ++= List( + "-Xms1024m", + "-Xmx1024m", + "-XX:ReservedCodeCacheSize=128m", + "-Xss2m", + "-Dfile.encoding=UTF-8" + ), + resolvers += Resolver.url( + "typesafe", + url("https://repo.typesafe.com/typesafe/ivy-releases/") + )(Resolver.ivyStylePatterns), + publish / skip := true + ) + .aggregate(`sbt-iw-plugin-presets`, `sbt-iw-projects`) diff --git a/flake.nix b/flake.nix index 4628332..c75d729 100644 --- a/flake.nix +++ b/flake.nix @@ -27,7 +27,7 @@ in { devShell = with pkgs; mkShell { - buildInputs = [ jre ammonite coursier bloop sbt scalafmt ]; + buildInputs = [ jre ammonite coursier sbt scalafmt ]; }; }); } diff --git a/project/build.properties b/project/build.properties index 3040987..081fdbb 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.4 +sbt.version=1.10.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index 05e961b..7b953bd 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ addSbtPlugin("org.foundweekends.giter8" %% "sbt-giter8" % "0.16.2") -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") -addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1") libraryDependencies += { - "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value + "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value } -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") \ No newline at end of file +addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") diff --git a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala index 705f1c1..d62b504 100644 --- a/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala +++ b/sbt-iw-plugin-presets/src/main/scala/works/iterative/sbt/IWPluginPresets.scala @@ -1,82 +1,72 @@ package works.iterative.sbt -import sbt._ -import sbt.Keys._ +import sbt.* +import sbt.Keys.* object IWPluginPresets extends AutoPlugin { - override def trigger = allRequirements + override def trigger = allRequirements - val scalaJSCrossprojectVersion = "1.3.2" + val scalaJSCrossprojectVersion = "1.3.2" - object autoImport { - val addIWProjects: Seq[Def.Setting[_]] = Seq( - addSbtPlugin( - "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version - ), - resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", - resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" - ) - val addScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.21.1") - val addWebScalaJSBundler: Def.Setting[_] = - addSbtPlugin("ch.epfl.scala" % "sbt-web-scalajs-bundler" % "0.21.1") - val addWebScalaJS: Def.Setting[_] = - addSbtPlugin("com.vmunier" % "sbt-web-scalajs" % "1.2.0") - val addScalablyTypedConverter: Def.Setting[_] = - addSbtPlugin( - "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta42" - ) - val addTzdb: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.2.0") - val addLocales: Def.Setting[_] = - addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.2.0") - val addScalaJS: Def.Setting[_] = - addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.14.0") - val addScalaJSCrossproject: Def.Setting[_] = - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion - ) - val addSbtScalaJSMap: Def.Setting[_] = - addSbtPlugin( - "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" - ) - val addScalaJSSupport: Seq[Def.Setting[_]] = Seq( - // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest - // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x - evictionErrorLevel := Level.Warn, - addScalaJS, - addScalaJSCrossproject, - addTzdb, - addLocales, - addScalablyTypedConverter - ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo - Seq(addSbtScalaJSMap) - } else { - Seq.empty - }) - val addLagom: Def.Setting[_] = - addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") - val addPlay: Def.Setting[_] = - addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") - val addDockerCompose: Def.Setting[_] = - addSbtPlugin("com.tapad" % "sbt-docker-compose" % "1.0.35") - val addPlaySupport: Seq[Def.Setting[_]] = Seq( - addPlay, - addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.2"), - addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.4") - ) - } + object autoImport { + val addIWProjects: Seq[Def.Setting[?]] = Seq( + addSbtPlugin( + "works.iterative.sbt" % "sbt-iw-projects" % BuildInfo.version + ), + resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", + resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" + ) + val addScalablyTypedConverter: Def.Setting[?] = + addSbtPlugin( + "org.scalablytyped.converter" % "sbt-converter" % "1.0.0-beta44" + ) + val addTzdb: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-tzdb" % "4.3.0") + val addLocales: Def.Setting[?] = + addSbtPlugin("io.github.cquiroz" % "sbt-locales" % "4.4.0") + val addScalaJS: Def.Setting[?] = + addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0") + val addScalaJSCrossproject: Def.Setting[?] = + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) + val addSbtScalaJSMap: Def.Setting[?] = + addSbtPlugin( + "com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1" + ) + val addScalaJSSupport: Seq[Def.Setting[?]] = Seq( + // TODO: remove after the scalajs-locales scala-xml dep will stop being in conflict with the rest + // It already uses scala-xml 2.0.1, but the rest is still on 1.3.x + evictionErrorLevel := Level.Warn, + addScalaJS, + addScalaJSCrossproject, + addTzdb, + addLocales, + addScalablyTypedConverter + ) ++ (if (file(".git").isFile) { // only add sbt-scala-js-map if we're in a git repo + Seq(addSbtScalaJSMap) + } else Seq.empty) + val addLagom: Def.Setting[?] = + addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.6.7") + val addPlay: Def.Setting[?] = + addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18") + val addPlaySupport: Seq[Def.Setting[?]] = Seq( + addPlay, + addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "2.0.0"), + addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "2.0.0") + ) + } - override def projectSettings: Seq[Def.Setting[_]] = Seq( - addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), - addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0"), - addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), - addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16"), - addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), - addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.11.1"), - addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0"), - addSbtPlugin( - "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + override def projectSettings: Seq[Def.Setting[?]] = Seq( + addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4"), + addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.1"), + addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2"), + addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.10.0"), + addSbtPlugin("com.github.sbt" % "sbt-git" % "2.0.1"), + addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1"), + addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0"), + addSbtPlugin( + "org.portable-scala" % "sbt-scalajs-crossproject" % scalaJSCrossprojectVersion + ) ) - ) } diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala index 5a84c67..03b843e 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsDeps.scala @@ -59,9 +59,10 @@ lazy val zioNIO: Def.Setting[_] = zioLib("nio", V.zioNIO) lazy val zioOptics: Def.Setting[_] = zioLib("optics", V.zioOptics) lazy val zioQuery: Def.Setting[_] = zioLib("query", V.zioQuery) + lazy val zioCli: Def.Setting[_] = zioLib("cli", V.zioCli) lazy val quill: Def.Setting[_] = - libraryDependencies += "io.getquill" %% "quill-caliban" % V.quill + libraryDependencies += "io.getquill" %% "quill-jdbc-zio" % V.quill lazy val zioSchema: Def.Setting[_] = zioLib("schema", V.zioSchema) @@ -128,11 +129,20 @@ lazy val tapirCats: Def.Setting[_] = tapirLib("cats") lazy val tapirZIOHttp4sServer: Def.Setting[_] = tapirLib("http4s-server-zio") - private val sttpClientOrg = "com.softwaremill.sttp.client3" - def sttpClientLib(name: String): Def.Setting[_] = - libraryDependencies += sttpClientOrg %%% name % V.sttpClient + private val sttpClient3Org = "com.softwaremill.sttp.client3" + def sttpClient3Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient3Org %%% name % V.sttpClient3 - lazy val sttpClientCore: Def.Setting[_] = sttpClientLib("core") + lazy val sttpClient3Core: Def.Setting[_] = sttpClientLib("core") + + private val sttpClient4Org = "com.softwaremill.sttp.client4" + def sttpClient4Lib(name: String): Def.Setting[_] = + libraryDependencies += sttpClient4Org %%% name % V.sttpClient4 + + lazy val sttpClient4Core: Def.Setting[_] = sttpClient4Lib("core") + + lazy val sttpClientCore: Def.Setting[_] = sttpClient3Core + def sttpClientLib(name: String): Def.Setting[_] = sttpClient3Lib(name) lazy val http4sBlazeServer: Def.Setting[_] = libraryDependencies += "org.http4s" %% "http4s-blaze-server" % V.http4sBlaze @@ -171,6 +181,12 @@ elastic4sOrg %% "elastic4s-json-play" % V.elastic4s ) + lazy val ducktape: Def.Setting[_] = + libraryDependencies += "io.github.arainko" %%% "ducktape" % V.ducktape + + lazy val chimney: Def.Setting[_] = + libraryDependencies += "io.scalaland" %% "chimney" % V.chimney + lazy val laminar: Def.Setting[_] = libraryDependencies += "com.raquo" %%% "laminar" % V.laminar @@ -193,7 +209,7 @@ libraryDependencies += "io.github.cquiroz" %%% "scala-java-time" % "2.5.0" lazy val addScalaJavaLocales: Def.Setting[_] = - libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.1" + libraryDependencies += "io.github.cquiroz" %%% "scala-java-locales" % "1.5.3" def useScalaJavaTimeAndLocales(proj: Project): Project = proj diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala index 6ef5597..657b9a3 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWMaterialsVersions.scala @@ -1,39 +1,43 @@ package works.iterative.sbt object IWMaterialsVersions { - val akka = "2.6.18" - val akkaHttp = "10.4.0" - val cats = "2.9.0" - val caliban = "2.4.3" - val elastic4s = "7.12.4" - val http4s = "0.23.24" - val http4sBlaze = "0.23.15" - val http4sPac4J = "4.1.0" - val laminar = "16.0.0" - val laminext = "0.16.2" - val logbackClassic = "1.4.8" - val pac4j = "5.4.2" - val play = "2.8.18" - val playJson = "2.9.3" - val quill = "4.7.3" - val scalaJsMacroTaskExecutor = "1.1.1" - val scalaJsJavaSecureRandom = "1.0.0" - val scalaTest = "3.2.14" - val slick = "3.3.3" - val sttpClient = "3.8.16" - val support = "1.7.0" - val tapir = "1.9.2" - val urlDsl = "0.6.0" - val waypoint = "7.0.0" - val zio = "2.0.19" - val zioConfig = "3.0.7" - val zioInteropCats = "23.1.0.0" - val zioInteropReactiveStreams = "2.0.2" - val zioJson = "0.6.2" - val zioLogging = "2.1.16" - val zioNIO = "2.0.2" - val zioOptics = "0.2.1" - val zioPrelude = "1.0.0-RC21" - val zioQuery = "0.5.1" - val zioSchema = "0.4.16" + val akka = "2.6.18" + val akkaHttp = "10.4.0" + val cats = "2.10.0" + val caliban = "2.6.0" + val chimney = "0.8.5" + val ducktape = "0.2.1" + val elastic4s = "7.12.4" + val http4s = "0.23.27" + val http4sBlaze = "0.23.16" + val http4sPac4J = "4.1.0" + val laminar = "17.0.0" + val laminext = "0.17.0" + val logbackClassic = "1.5.6" + val pac4j = "5.4.2" + val play = "2.8.18" + val playJson = "2.9.3" + val quill = "4.8.4" + val scalaJsMacroTaskExecutor = "1.1.1" + val scalaJsJavaSecureRandom = "1.0.0" + val scalaTest = "3.2.14" + val slick = "3.3.3" + val sttpClient3 = "3.9.7" + val sttpClient4 = "4.0.0-M14" + val support = "1.7.0" + val tapir = "1.10.7" + val urlDsl = "0.6.1" + val waypoint = "8.0.0" + val zio = "2.1.1" + val zioConfig = "4.0.2" + val zioCli = "0.5.0" + val zioInteropCats = "23.1.0.2" + val zioInteropReactiveStreams = "2.0.2" + val zioJson = "0.6.2" + val zioLogging = "2.2.4" + val zioNIO = "2.0.2" + val zioOptics = "0.2.1" + val zioPrelude = "1.0.0-RC26" + val zioQuery = "0.7.1" + val zioSchema = "1.1.1" } diff --git a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala index ff5517d..e5b14c4 100644 --- a/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala +++ b/sbt-iw-projects/src/main/scala/works/iterative/sbt/IWScalaProjectPlugin.scala @@ -1,66 +1,67 @@ package works.iterative.sbt -import sbt._ -import sbt.Keys._ +import sbt.* +import sbt.Keys.* import scalafix.sbt.ScalafixPlugin -import scalafix.sbt.ScalafixPlugin.autoImport._ +import scalafix.sbt.ScalafixPlugin.autoImport.* import org.scalafmt.sbt.ScalafmtPlugin -import org.scalafmt.sbt.ScalafmtPlugin.autoImport._ +import org.scalafmt.sbt.ScalafmtPlugin.autoImport.* object IWScalaProjectPlugin extends AutoPlugin { - override def requires: Plugins = ScalafixPlugin && ScalafmtPlugin + override def requires: Plugins = ScalafixPlugin && ScalafmtPlugin - override def trigger: PluginTrigger = allRequirements + override def trigger: PluginTrigger = allRequirements - object autoImport { - val scala2Version = "2.13.12" - val scala3Version = "3.3.1" - def publishToIW: Seq[Def.Setting[_]] = inThisBuild( - List( - publishTo := { - val base = "https://dig.iterative.works/maven/" - if (version.value.endsWith("SNAPSHOT")) - Some("snapshots" at base + "snapshots") - else Some("releases" at base + "releases") - }, - credentials += { - val username = sys.env.getOrElse("IW_USERNAME", "") - val password = sys.env.getOrElse("IW_PASSWORD", "") - Credentials( - "GitBucket Maven Repository", - "dig.iterative.works", - username, - password - ) - } - ) + object autoImport { + val scala2Version = "2.13.14" + val scala3LTSVersion = "3.3.3" + val scala3Version = "3.4.2" + def publishToIW: Seq[Def.Setting[?]] = inThisBuild( + List( + publishTo := { + val base = "https://dig.iterative.works/maven/" + if (version.value.endsWith("SNAPSHOT")) { + Some("snapshots" at base + "snapshots") + } else Some("releases" at base + "releases") + }, + credentials += { + val username = sys.env.getOrElse("IW_USERNAME", "") + val password = sys.env.getOrElse("IW_PASSWORD", "") + Credentials( + "GitBucket Maven Repository", + "dig.iterative.works", + username, + password + ) + } + ) + ) + def resolveIW: Seq[Def.Setting[?]] = inThisBuild( + List( + resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", + resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" + ) + ) + } + + import autoImport.* + + override def buildSettings: Seq[Def.Setting[?]] = Seq( + scalaVersion := scala3Version, + // enable SemanticDB + semanticdbEnabled := true, + // use Scalafix compatible version, + semanticdbVersion := scalafixSemanticdb.revision, + versionScheme := Some("early-semver") ) - def resolveIW: Seq[Def.Setting[_]] = inThisBuild( - List( - resolvers += "IW releases" at "https://dig.iterative.works/maven/releases", - resolvers += "IW snapshots" at "https://dig.iterative.works/maven/snapshots" - ) + + override def projectSettings: Seq[Def.Setting[?]] = Seq( + // Do not buffer logging in tests + Test / logBuffered := false + // Do I need this still for Metals? + // scalacOptions += s"-P:semanticdb:sourceroot:${(ThisBuild / baseDirectory).value}", + // This is not recommended, as it slows down compilation. + // scalafmtOnCompile := true ) - } - - import autoImport._ - - override def buildSettings: Seq[Def.Setting[_]] = Seq( - scalaVersion := scala3Version, - // enable SemanticDB - semanticdbEnabled := true, - // use Scalafix compatible version, - semanticdbVersion := scalafixSemanticdb.revision, - versionScheme := Some("early-semver") - ) - - override def projectSettings: Seq[Def.Setting[_]] = Seq( - // Do not buffer logging in tests - Test / logBuffered := false, - // Do I need this still for Metals? - // scalacOptions += s"-P:semanticdb:sourceroot:${(ThisBuild / baseDirectory).value}", - // This is not recommended, as it slows down compilation. - // scalafmtOnCompile := true - ) } diff --git a/src/main/g8/.scalafmt.conf b/src/main/g8/.scalafmt.conf index d012fd1..13fa922 100644 --- a/src/main/g8/.scalafmt.conf +++ b/src/main/g8/.scalafmt.conf @@ -1,3 +1,30 @@ -version = "3.7.2" +version = "3.7.17" runner.dialect = scala3 + +maxColumn = 100 +indent.main = 4 +indent.callSite = 4 + +# Recommended, to not penalize `match` statements +# Unfortunately, treesitter is currently not ok with that +# indent.matchSite = 0 + +newlines.source = keep +rewrite.scala3.convertToNewSyntax = true +rewrite.scala3.removeOptionalBraces = yes +rewrite.scala3.insertEndMarkerMinLines = 5 + +fileOverride { + "glob:**/*.sbt" { + runner.dialect = sbt1 + } + "glob:**/project/*.scala" { + runner.dialect = sbt1 + } +} + +project.includeFilters = [ + ".*\\.scala$", + ".*\\.sbt$" +] diff --git a/src/main/g8/default.properties b/src/main/g8/default.properties index 656122d..dd13054 100644 --- a/src/main/g8/default.properties +++ b/src/main/g8/default.properties @@ -1,4 +1,4 @@ name = iw-project -iw_version = 0.3.20 -sbt_version = 1.9.4 -java_version = 17 +iw_version = 0.3.21 +sbt_version = 1.10.0 +java_version = 21