|
1 | | -val Scala213 = "2.13.5" |
| 1 | +ThisBuild / crossScalaVersions := Seq("2.12.13", "2.13.6", "3.0.1") |
2 | 2 |
|
3 | | -ThisBuild / crossScalaVersions := Seq("2.12.13", Scala213) |
4 | | -ThisBuild / scalaVersion := crossScalaVersions.value.last |
| 3 | +ThisBuild / testFrameworks += new TestFramework("munit.Framework") |
5 | 4 |
|
6 | | -ThisBuild / githubWorkflowArtifactUpload := false |
7 | | - |
8 | | -ThisBuild / githubWorkflowBuild := Seq( |
9 | | - WorkflowStep.Sbt(List("test", "mimaReportBinaryIssues")), |
10 | | -) |
11 | | - |
12 | | -ThisBuild / githubWorkflowTargetTags ++= Seq("v*") |
13 | | - |
14 | | -// currently only publishing tags |
15 | | -ThisBuild / githubWorkflowPublishTargetBranches := |
16 | | - Seq(RefPredicate.StartsWith(Ref.Tag("v"))) |
17 | | - |
18 | | -ThisBuild / githubWorkflowPublishPreamble += |
19 | | - WorkflowStep.Use(UseRef.Public("olafurpg", "setup-gpg", "v3")) |
| 5 | +val catsV = "2.6.1" |
| 6 | +val catsEffectV = "3.2.2" |
| 7 | +val catsCollectionV = "0.9.3" |
20 | 8 |
|
21 | | -ThisBuild / githubWorkflowPublish := Seq( |
22 | | - WorkflowStep.Sbt( |
23 | | - List("ci-release"), |
24 | | - name = Some("Publish artifacts to Sonatype"), |
25 | | - env = Map( |
26 | | - "PGP_PASSPHRASE" -> "${{ secrets.PGP_PASSPHRASE }}", |
27 | | - "PGP_SECRET" -> "${{ secrets.PGP_SECRET }}", |
28 | | - "SONATYPE_PASSWORD" -> "${{ secrets.SONATYPE_PASSWORD }}", |
29 | | - "SONATYPE_USERNAME" -> "${{ secrets.SONATYPE_USERNAME }}" |
30 | | - ) |
31 | | - ), |
32 | | -) |
| 9 | +val munitV = "0.7.25" |
| 10 | +val munitCEV = "1.0.5" |
33 | 11 |
|
34 | 12 | lazy val mules = project.in(file(".")) |
35 | 13 | .disablePlugins(MimaPlugin) |
36 | | - .settings(skip in publish := true) |
37 | | - .settings(commonSettings) |
38 | | - .aggregate(core, caffeine, reload, noop, bench) |
| 14 | + .enablePlugins(NoPublishPlugin) |
| 15 | + .aggregate(core.jvm, core.js, caffeine, reload.jvm, reload.js, noop.jvm, noop.js, bench) |
39 | 16 |
|
40 | 17 | lazy val bench = project.in(file("modules/bench")) |
41 | | - .disablePlugins(MimaPlugin) |
42 | 18 | .enablePlugins(JmhPlugin) |
43 | | - .settings(skip in publish := true) |
44 | | - .settings(commonSettings) |
45 | | - .dependsOn(core, caffeine) |
| 19 | + .disablePlugins(MimaPlugin) |
| 20 | + .enablePlugins(NoPublishPlugin) |
| 21 | + .dependsOn(core.jvm, caffeine) |
46 | 22 |
|
47 | | -lazy val core = project.in(file("modules/core")) |
48 | | - .settings(commonSettings) |
| 23 | +lazy val core = crossProject(JSPlatform, JVMPlatform) |
| 24 | + .crossType(CrossType.Pure) |
| 25 | + .in(file("modules/core")) |
49 | 26 | .settings( |
50 | | - name := "mules" |
| 27 | + name := "mules", |
| 28 | + libraryDependencies ++= Seq( |
| 29 | + "org.typelevel" %%% "cats-core" % catsV, |
| 30 | + "org.typelevel" %%% "cats-effect" % catsEffectV, |
| 31 | + "io.chrisdavenport" %%% "mapref" % "0.2.0", |
| 32 | + ), |
| 33 | + ).settings(testDeps) |
| 34 | + .jsSettings( |
| 35 | + scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.CommonJSModule)}, |
51 | 36 | ) |
52 | 37 |
|
53 | 38 | lazy val caffeine = project.in(file("modules/caffeine")) |
54 | | - .settings(commonSettings) |
55 | | - .dependsOn(core) |
| 39 | + .dependsOn(core.jvm) |
56 | 40 | .settings( |
57 | 41 | name := "mules-caffeine", |
58 | 42 | libraryDependencies ++= Seq( |
59 | 43 | "com.github.ben-manes.caffeine" % "caffeine" % "2.9.2" |
60 | | - ) |
61 | | - ) |
| 44 | + ), |
| 45 | + ).settings(testDeps) |
62 | 46 |
|
63 | | -lazy val noop = project.in(file("modules/noop")) |
64 | | - .settings(commonSettings) |
| 47 | +lazy val noop = crossProject(JSPlatform, JVMPlatform) |
| 48 | + .crossType(CrossType.Pure) |
| 49 | + .in(file("modules/noop")) |
65 | 50 | .dependsOn(core) |
66 | 51 | .settings( |
67 | 52 | name := "mules-noop" |
| 53 | + ).settings(testDeps) |
| 54 | + .jsSettings( |
| 55 | + scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.CommonJSModule)}, |
68 | 56 | ) |
69 | 57 |
|
70 | | -lazy val reload = project.in(file("modules/reload")) |
71 | | - .settings(commonSettings) |
| 58 | +lazy val reload = crossProject(JSPlatform, JVMPlatform) |
| 59 | + .crossType(CrossType.Pure) |
| 60 | + .in(file("modules/reload")) |
72 | 61 | .dependsOn(core) |
73 | 62 | .settings( |
74 | 63 | name := "mules-reload", |
75 | 64 | libraryDependencies ++= Seq( |
76 | | - "org.typelevel" %% "cats-collections-core" % catsCollectionV |
77 | | - ) |
| 65 | + "org.typelevel" %%% "cats-collections-core" % catsCollectionV |
| 66 | + ), |
| 67 | + ).settings(testDeps) |
| 68 | + .jsSettings( |
| 69 | + scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.CommonJSModule)}, |
78 | 70 | ) |
79 | 71 |
|
80 | | -val catsV = "2.6.1" |
81 | | -val catsEffectV = "3.1.0" |
82 | | -val catsCollectionV = "0.9.2" |
83 | | - |
84 | | -val munitV = "0.7.25" |
85 | | -val munitCEV = "1.0.5" |
86 | | - |
87 | | -lazy val commonSettings = Seq( |
88 | | - scalaVersion := "2.13.5", |
89 | | - crossScalaVersions := Seq(scalaVersion.value, "2.12.12"), |
90 | | - |
91 | | - addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.13.0" cross CrossVersion.full), |
92 | | - addCompilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.1"), |
93 | | - |
94 | | - testFrameworks += new TestFramework("munit.Framework"), |
95 | | - |
| 72 | +lazy val testDeps = Seq( |
96 | 73 | libraryDependencies ++= Seq( |
97 | | - "org.typelevel" %% "cats-core" % catsV, |
98 | | - "org.typelevel" %% "cats-effect" % catsEffectV, |
99 | | - "io.chrisdavenport" %% "mapref" % "0.2.0-M2", |
100 | | - |
101 | | - "org.typelevel" %% "cats-effect-laws" % catsEffectV % Test, |
102 | | - "org.scalameta" %% "munit" % munitV % Test, |
103 | | - "org.scalameta" %% "munit-scalacheck" % munitV % Test, |
104 | | - "org.typelevel" %% "munit-cats-effect-3" % munitCEV % Test, |
| 74 | + "org.typelevel" %%% "cats-effect-laws" % catsEffectV % Test, |
| 75 | + "org.scalameta" %%% "munit" % munitV % Test, |
| 76 | + "org.scalameta" %%% "munit-scalacheck" % munitV % Test, |
| 77 | + "org.typelevel" %%% "munit-cats-effect-3" % munitCEV % Test, |
105 | 78 | ) |
106 | 79 | ) |
107 | | - |
108 | | -inThisBuild(List( |
109 | | - organization := "io.chrisdavenport", |
110 | | - homepage := Some(url("https://github.com/ChristopherDavenport/mules")), |
111 | | - licenses += ("MIT", url("http://opensource.org/licenses/MIT")), |
112 | | - developers := List( |
113 | | - Developer( |
114 | | - "ChristopherDavenport", |
115 | | - "Christopher Davenport", |
116 | | - "chris@christopherdavenport.tech", |
117 | | - url("https://github.com/ChristopherDavenport") |
118 | | - ) |
119 | | - ), |
120 | | - scalacOptions in (Compile, doc) ++= Seq( |
121 | | - "-groups", |
122 | | - "-sourcepath", (baseDirectory in LocalRootProject).value.getAbsolutePath, |
123 | | - "-doc-source-url", "https://github.com/ChristopherDavenport/mules/blob/v" + version.value + "€{FILE_PATH}.scala" |
124 | | - ), |
125 | | -)) |
0 commit comments