summaryrefslogtreecommitdiff
path: root/build.sc
blob: 83a7087ce30bc2375b62ec49a93e8b8ae364b6f7 (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
58
59
60
61
62
63
import mill._
import mill.scalalib._
import scalafmt._

import $ivy.`de.tototec::de.tobiasroeser.mill.vcs.version_mill0.9:0.1.1`
import de.tobiasroeser.mill.vcs.version.VcsVersion
import $ivy.`com.lihaoyi::mill-contrib-buildinfo:$MILL_VERSION`
import mill.contrib.buildinfo.BuildInfo

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

  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.2.10",
      ivy"com.github.pureconfig::pureconfig:0.17.1",
      ivy"com.github.scopt::scopt:4.0.1",
      ivy"com.typesafe.akka::akka-stream:2.6.18",
      ivy"org.bouncycastle:bcprov-jdk15to18:1.70",
      ivy"org.log4s::log4s:1.10.0"
    )

  val name = "spacebeans"
  def buildInfoMembers: T[Map[String, String]] =
    T {
      Map(
        "name" -> name,
        "version" -> VcsVersion.vcsState().format()
      )
    }
  def buildInfoPackageName = Some("net.usebox.gemini.server")

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

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

    override def compile =
      T {
        reformat().apply()
        super.compile()
      }
  }
}