aboutsummaryrefslogtreecommitdiff
path: root/build.sc
blob: 65b34da9e6d85401bd9815a9f1cb6c389f214c4a (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
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.6"

  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.4",
    ivy"com.github.pureconfig::pureconfig:0.16.0",
    ivy"com.github.scopt::scopt:4.0.1",
    ivy"com.typesafe.akka::akka-stream:2.6.15",
    ivy"org.bouncycastle:bcprov-jdk15to18:1.69",
    ivy"org.log4s::log4s:1.10.0"
  )

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

  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.9")

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