summaryrefslogtreecommitdiff
path: root/contrib/buildinfo/src/BuildInfo.scala
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/buildinfo/src/BuildInfo.scala')
-rw-r--r--contrib/buildinfo/src/BuildInfo.scala36
1 files changed, 19 insertions, 17 deletions
diff --git a/contrib/buildinfo/src/BuildInfo.scala b/contrib/buildinfo/src/BuildInfo.scala
index fe252b97..0804b9a5 100644
--- a/contrib/buildinfo/src/BuildInfo.scala
+++ b/contrib/buildinfo/src/BuildInfo.scala
@@ -1,8 +1,8 @@
package mill.contrib.buildinfo
import mill.T
-import mill.define.Target
-import mill.api.{Ctx, Logger, PathRef}
+import mill.api.Logger
+import mill.api.PathRef
import mill.scalalib.ScalaModule
trait BuildInfo extends ScalaModule {
@@ -15,33 +15,35 @@ trait BuildInfo extends ScalaModule {
Map.empty[String, String]
}
- private def generateBuildInfo(members: Map[String, Any])(implicit dest: Ctx.Dest, log: Ctx.Log): Seq[PathRef] =
- if (!members.isEmpty) {
- val outputFile = dest.dest / "BuildInfo.scala"
+ def generatedBuildInfo: T[(Seq[PathRef], PathRef)] = T {
+ val logger: Logger = T.ctx().log
+ val members: Map[String, String] = buildInfoMembers()
+ if (members.nonEmpty) {
+ val outputFile = T.ctx().dest / "BuildInfo.scala"
val internalMembers =
members
.map {
case (name, value) => s""" def ${name} = "${value}""""
}
.mkString("\n")
- log.log.debug(s"Generating object [${buildInfoPackageName.map(_ + ".").getOrElse("")}${buildInfoObjectName}] with [${members.size}] members to [${outputFile}]")
+ logger.debug(s"Generating object [${buildInfoPackageName.map(_ + ".").getOrElse("")}${buildInfoObjectName}] with [${members.size}] members to [${outputFile}]")
os.write(
outputFile,
- s"""|${buildInfoPackageName.map(p => s"package ${p}").getOrElse("")}
- |object ${buildInfoObjectName} {
- |$internalMembers
- |}""".stripMargin
+ s"""|${buildInfoPackageName.map(packageName => s"package ${packageName}\n").getOrElse("")}
+ |object ${buildInfoObjectName} {
+ |$internalMembers
+ |}""".stripMargin
)
- Seq(PathRef(outputFile))
+ (Seq(PathRef(outputFile)), PathRef(T.ctx().dest))
} else {
- log.log.debug("No build info member defined, skipping code generation")
- Seq.empty[PathRef]
+ logger.debug("No build info member defined, skipping code generation")
+ (Seq.empty[PathRef], PathRef(T.ctx().dest))
}
-
- def buildInfo = T {
- generateBuildInfo(buildInfoMembers())
}
- override def generatedSources: Target[Seq[PathRef]] = T { super.generatedSources() ++ buildInfo() }
+ override def generatedSources = T {
+ val (_, destPathRef) = generatedBuildInfo()
+ super.generatedSources() :+ destPathRef
+ }
}