diff options
author | Juan J. Martinez <jjm@usebox.net> | 2021-02-26 13:53:21 +0000 |
---|---|---|
committer | Juan J. Martinez <jjm@usebox.net> | 2021-07-22 19:49:49 +0100 |
commit | 43c68ba38f7dc33efdbf38b12fb11e8a3db7c031 (patch) | |
tree | c238a0f79a1eb9225fc045e45cd3996241b38dfd /build.sc | |
parent | a14cafa19bb8b78722775fa3fee3b9987813d5b6 (diff) | |
download | spacebeans-43c68ba38f7dc33efdbf38b12fb11e8a3db7c031.tar.gz spacebeans-43c68ba38f7dc33efdbf38b12fb11e8a3db7c031.zip |
BuildInfo support and smart version
Diffstat (limited to 'build.sc')
-rw-r--r-- | build.sc | 31 |
1 files changed, 30 insertions, 1 deletions
@@ -2,7 +2,10 @@ import mill._ import mill.scalalib._ import scalafmt._ -object server extends ScalaModule with ScalafmtModule { +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.5" def scalacOptions = Seq( @@ -30,6 +33,32 @@ object server extends ScalaModule with ScalafmtModule { super.compile() } + def gitHead = T.input { os.proc('git, "rev-parse", "HEAD").call().out.trim } + + def getVersion = T.input { + val tag = try Option( + os.proc('git, 'describe, "--exact-match", "--tags", "--always", gitHead()).call().out.trim + ) + catch { case e => None } + + tag match { + case Some(t) => t + case None => + val latestTaggedVersion = os.proc('git, 'describe, "--abbrev=0", "--always", "--tags").call().out.trim + val latestCommit = gitHead().take(6) + s"$latestTaggedVersion-$latestCommit" + } + } + + val name = "spacebeans" + def buildInfoMembers: T[Map[String, String]] = T { + Map( + "name" -> name, + "version" -> getVersion() + ) + } + def buildInfoPackageName = Some("net.usebox.gemini.server") + object test extends Tests with ScalafmtModule { def ivyDeps = Agg(ivy"org.scalatest::scalatest:3.2.2") def testFrameworks = Seq("org.scalatest.tools.Framework") |