-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathBuildSettings.scala
96 lines (90 loc) · 3.96 KB
/
BuildSettings.scala
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
import com.typesafe.sbt.site.SitePlugin.autoImport._
import mdoc.MdocPlugin.autoImport._
import microsites.CdnDirectives
import microsites.MicrositesPlugin.autoImport._
import sbt.Keys._
import sbt._
import sbt.nio.Keys._
import sbtunidoc.ScalaUnidocPlugin.autoImport._
import sbtversionpolicy.SbtVersionPolicyPlugin.autoImport._
import scalafix.sbt.ScalafixPlugin.autoImport._
object BuildSettings {
private def isScala3(scalaVersion: String): Boolean = CrossVersion.partialVersion(scalaVersion).exists(_._1 == 3)
private val scala212 = "2.12.19"
private val scala213 = "2.13.16"
private val scala3 = "3.3.5"
lazy val common: Seq[Def.Setting[_]] = Seq(
Global / onChangedBuildSource := ReloadOnSourceChanges,
Global / cancelable := true,
Global / excludeLintKeys += fork,
ThisBuild / versionScheme := Some("early-semver"),
ThisBuild / versionPolicyIntention := Compatibility.BinaryCompatible,
turbo := true,
organization := "com.avast",
organizationName := "Avast",
organizationHomepage := Some(url("https://avast.com")),
homepage := Some(url("https://github.com/avast/scala-server-toolkit")),
description := "Functional programming toolkit for building server applications in Scala.",
licenses := Seq("MIT" -> url("https://raw.githubusercontent.com/avast/scala-server-toolkit/master/LICENSE")),
developers := List(Developer("jakubjanecek", "Jakub Janecek", "[email protected]", url("https://www.avast.com"))),
scalaVersion := scala213,
crossScalaVersions := List(scala213, scala212, scala3),
fork := true,
libraryDependencies ++= (if (!isScala3(scalaVersion.value)) List(compilerPlugin(Dependencies.kindProjector)) else List.empty) ++ List(
Dependencies.catsEffect,
Dependencies.scalaCollectionCompat,
Dependencies.jetbrainsAnnotations % "compile-internal",
Dependencies.logbackClassic % Test,
Dependencies.scalaTest % Test
),
semanticdbEnabled := true,
semanticdbVersion := scalafixSemanticdb.revision,
ThisBuild / scalafixDependencies ++= Seq(
Dependencies.scalafixScaluzzi,
Dependencies.scalafixOrganizeImports
),
scalacOptions := {
// TODO: solve compilation warnings on Scala 3
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((3, _)) => scalacOptions.value.filterNot(_ == "-Xfatal-warnings") ++ Seq("-source:future", "-language:adhocExtensions")
case Some((2, _)) => scalacOptions.value.filterNot(_ == "-Xfatal-warnings") ++ Seq("-Xsource:3")
case _ => scalacOptions.value
}
},
Compile / doc / scalacOptions -= "-Xfatal-warnings",
javacOptions ++= Seq("-source", "1.8", "-target", "1.8"),
Test / publishArtifact := false
)
lazy val microsite: Seq[Def.Setting[_]] = Seq(
micrositeName := "scala-server-toolkit",
micrositeDescription := "Functional programming toolkit for building server applications in Scala.",
micrositeAuthor := "Avast",
micrositeOrganizationHomepage := "https://avast.com",
micrositeGithubOwner := "avast",
micrositeGithubRepo := "scala-server-toolkit",
micrositeUrl := "https://avast.github.io",
micrositeDocumentationUrl := "api/latest",
micrositeDocumentationLabelDescription := "API ScalaDoc",
micrositeBaseUrl := "/scala-server-toolkit",
micrositeTwitter := "@avast_devs",
micrositeGitterChannel := false,
micrositeTheme := "pattern",
micrositeHighlightTheme := "github",
micrositeCDNDirectives := CdnDirectives(
cssList = List(
"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/github.min.css"
)
),
micrositeShareOnSocial := false,
mdoc / fork := true,
mdocIn := file("docs"),
mdocVariables := Map("VERSION" -> version.value),
mdocAutoDependency := true,
micrositeDataDirectory := file("site"),
ScalaUnidoc / siteSubdirName := "api/latest",
addMappingsToSiteDir(
ScalaUnidoc / packageDoc / mappings,
ScalaUnidoc / siteSubdirName
)
)
}