aboutsummaryrefslogtreecommitdiff
path: root/build.sc
blob: 015fbc77c1d8a69679114d1e9c02d2219ef9fb51 (plain)
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
import $ivy.`com.lihaoyi::mill-contrib-buildinfo:$MILL_VERSION`
import $ivy.`de.tototec::de.tobiasroeser.mill.vcs.version::0.4.0`
import de.tobiasroeser.mill.vcs.version.VcsVersion
import mill._
import mill.contrib.buildinfo.BuildInfo
import mill.scalalib._
import scalafmt._

object server extends ScalaModule with ScalafmtModule with BuildInfo {
  def scalaVersion = "2.13.14"

  def scalacOptions =
    Seq(
      // features
      "-encoding",
      "utf-8",
      "-explaintypes",
      "-language:higherKinds",
      // warnings
      "-deprecation",
      "-Xlint:unused",
      "-unchecked"
    )

  def ivyDeps =
    Agg(
      ivy"ch.qos.logback:logback-classic:1.5.8",
      ivy"com.github.pureconfig::pureconfig:0.17.7",
      ivy"com.github.scopt::scopt:4.1.0",
      ivy"org.apache.pekko::pekko-stream:1.1.1",
      ivy"org.bouncycastle:bcprov-jdk15to18:1.78.1",
      ivy"org.log4s::log4s:1.10.0"
    )

  val name = "spacebeans"
  def buildInfoMembers =
    Seq(
      BuildInfo.Value("name", name),
      BuildInfo.Value("version", VcsVersion.vcsState().format())
    )
  def buildInfoPackageName = "net.usebox.gemini.server"

  def assembly =
    T {
      val version = VcsVersion.vcsState().format()
      val spacePath = T.dest / (name + "-" + version + ".jar")
      os.move(super.assembly().path, spacePath)
      PathRef(spacePath)
    }

  object test extends ScalaTests with ScalafmtModule with TestModule.ScalaTest {
    def ivyDeps = Agg(ivy"org.scalatest::scalatest:3.2.19")

    def forkEnv = super.forkEnv() ++
      Map("MILL_TEST_RESOURCE_FOLDER" -> resources().map(_.path).mkString(";"))
  }
}