diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-12-12 16:56:02 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-12 16:56:02 -0800 |
commit | 9ba4cb69331386dfde9bac69dc2d5b22401face3 (patch) | |
tree | 120349e8015ae5717d36bd44209cde6ff9543518 /contrib/buildinfo/src/BuildInfo.scala | |
parent | ea7fceb6e56f53bde3517586dfc57e10a605a524 (diff) | |
download | mill-9ba4cb69331386dfde9bac69dc2d5b22401face3.tar.gz mill-9ba4cb69331386dfde9bac69dc2d5b22401face3.tar.bz2 mill-9ba4cb69331386dfde9bac69dc2d5b22401face3.zip |
collapse boilerplate folder structure within src/ folders (#505)
* collapse boilerplate folder structure within src/ folders
* .
Diffstat (limited to 'contrib/buildinfo/src/BuildInfo.scala')
-rw-r--r-- | contrib/buildinfo/src/BuildInfo.scala | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/contrib/buildinfo/src/BuildInfo.scala b/contrib/buildinfo/src/BuildInfo.scala new file mode 100644 index 00000000..1c8d9d9e --- /dev/null +++ b/contrib/buildinfo/src/BuildInfo.scala @@ -0,0 +1,44 @@ +package mill.contrib + +import mill.T +import mill.define.Target +import mill.api.PathRef +import mill.scalalib.ScalaModule +import mill.api.Ctx + +trait BuildInfo extends ScalaModule { + + def buildInfoPackageName: Option[String] = None + + def buildInfoObjectName: String = "BuildInfo" + + def buildInfoMembers: T[Map[String, String]] = T { + Map.empty[String, String] + } + + private def generateBuildInfo(members: Map[String, Any])(implicit dest: Ctx.Dest): Seq[PathRef] = + if(!members.isEmpty){ + val outputFile = dest.dest / "BuildInfo.scala" + val internalMembers = + members + .map { + case (name, value) => s""" def ${name} = "${value}"""" + } + .mkString("\n") + os.write(outputFile, + s"""|${buildInfoPackageName.map(p => s"package ${p}").getOrElse("")} + |object ${buildInfoObjectName} { + |$internalMembers + |}""".stripMargin) + Seq(PathRef(outputFile)) + } else { + Seq.empty[PathRef] + } + + def buildInfo = T { + generateBuildInfo(buildInfoMembers()) + } + + override def generatedSources: Target[Seq[PathRef]] = super.generatedSources() ++ buildInfo() + +} |