forked from circe/circe-fs2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sbt
140 lines (129 loc) · 4.16 KB
/
build.sbt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
organization in ThisBuild := "io.circe"
val compilerOptions = Seq(
"-deprecation",
"-encoding",
"UTF-8",
"-feature",
"-language:existentials",
"-language:higherKinds",
"-unchecked",
"-Ywarn-dead-code",
"-Ywarn-numeric-widen"
)
val circeVersion = "0.13.0"
val fs2Version = "2.5.4"
val jawnVersion = "1.1.2"
val previousCirceFs2Version = "0.11.0"
val scalaTestVersion = "3.2.8"
val scalaTestPlusVersion = "3.2.2.0"
def priorTo2_13(scalaVersion: String): Boolean =
CrossVersion.partialVersion(scalaVersion) match {
case Some((2, minor)) if minor < 13 => true
case _ => false
}
val baseSettings = Seq(
scalacOptions ++= compilerOptions,
scalacOptions ++= (
if (priorTo2_13(scalaVersion.value))
Seq(
"-Xfuture",
"-Yno-adapted-args",
"-Ywarn-unused-import"
)
else
Seq(
"-Ywarn-unused:imports"
)
),
scalacOptions in (Compile, console) ~= {
_.filterNot(Set("-Ywarn-unused-import"))
},
scalacOptions in (Test, console) ~= {
_.filterNot(Set("-Ywarn-unused-import"))
},
coverageHighlighting := true,
coverageScalacPluginVersion := "1.3.1",
coverageEnabled := (if (priorTo2_13(scalaVersion.value)) coverageEnabled.value else false),
(scalastyleSources in Compile) ++= (unmanagedSourceDirectories in Compile).value
)
val allSettings = baseSettings ++ publishSettings
val docMappingsApiDir = settingKey[String]("Subdirectory in site target directory for API docs")
val fs2 = project
.in(file("."))
.settings(allSettings)
.settings(
moduleName := "circe-fs2",
mimaPreviousArtifacts := Set("io.circe" %% "circe-fs2" % previousCirceFs2Version),
libraryDependencies ++= Seq(
"co.fs2" %% "fs2-core" % fs2Version,
"io.circe" %% "circe-jawn" % circeVersion,
"io.circe" %% "circe-generic" % circeVersion % Test,
"io.circe" %% "circe-testing" % circeVersion % Test,
"org.scalatest" %% "scalatest" % scalaTestVersion % Test,
"org.scalatestplus" %% "scalacheck-1-14" % scalaTestPlusVersion % Test,
"org.typelevel" %% "jawn-parser" % jawnVersion
),
ghpagesNoJekyll := true,
docMappingsApiDir := "api",
addMappingsToSiteDir(mappings in (Compile, packageDoc), docMappingsApiDir)
)
lazy val publishSettings = Seq(
releaseCrossBuild := true,
releaseVcsSign := true,
releasePublishArtifactsAction := PgpKeys.publishSigned.value,
homepage := Some(url("https://github.com/circe/circe-fs2")),
licenses := Seq("Apache 2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0")),
publishMavenStyle := true,
publishArtifact in Test := false,
pomIncludeRepository := { _ => false },
publishTo := {
val nexus = "https://oss.sonatype.org/"
if (isSnapshot.value)
Some("snapshots".at(nexus + "content/repositories/snapshots"))
else
Some("releases".at(nexus + "service/local/staging/deploy/maven2"))
},
/* Someday maybe Scaladoc will actually work on package object-only projects.
autoAPIMappings := true,
apiURL := Some(url("https://circe.github.io/circe-fs2/api/")),
*/
scmInfo := Some(
ScmInfo(
url("https://github.com/circe/circe-fs2"),
"scm:git:[email protected]:circe/circe-fs2.git"
)
),
developers := List(
Developer(
"travisbrown",
"Travis Brown",
url("https://twitter.com/travisbrown")
)
)
)
credentials ++= (
for {
username <- Option(System.getenv().get("SONATYPE_USERNAME"))
password <- Option(System.getenv().get("SONATYPE_PASSWORD"))
} yield Credentials(
"Sonatype Nexus Repository Manager",
"oss.sonatype.org",
username,
password
)
).toSeq
// No auto-publish atm. Remove this line to generate publish stage
ThisBuild / githubWorkflowPublishTargetBranches := Seq.empty
ThisBuild / githubWorkflowBuild := Seq(
WorkflowStep.Sbt(
List("clean", "coverage", "test", "coverageReport", "scalafmtCheckAll"),
id = None,
name = Some("Test")
),
WorkflowStep.Use(
UseRef.Public("codecov", "codecov-action", "e156083f13aff6830c92fc5faa23505779fbf649"), // v1.2.1
name = Some("Upload code coverage")
)
)