build.sc
changeset 18 8cfd67425811
parent 16 4556852613a9
child 20 677672b9e386
--- a/build.sc	Tue Dec 11 21:37:53 2018 +0100
+++ b/build.sc	Thu Dec 13 14:21:10 2018 +0100
@@ -1,16 +1,11 @@
-import java.io.File
-
 import ammonite.ops._
-import coursier.maven.MavenRepository
 import mill._
-import mill.define.{Command, Input, Sources, Target}
+import mill.define.{Input, Sources, Target}
 import mill.scalajslib._
 import mill.scalalib._
 import mill.scalalib.publish._
 import mill.util.Loose
 
-import scala.sys
-
 val appVersion = "18.12-SNAPSHOT"
 
 val scalaJsVer = "0.6.25"
@@ -111,6 +106,38 @@
 object content extends Common {
   override def moduleDeps = Seq(base)
   override def sources : Sources = T.sources{ millSourcePath / up / 'example / 'src }
+  override def generatedSources: Target[Seq[PathRef]] = T{
+    val dir = T.ctx().dest
+    val src = millSourcePath / up / 'example / 'content
+    val ids = ls! src filter(_.name endsWith ".scalatex") map { p =>
+      val id = p.name replaceAllLiterally (".scalatex", "")
+      val aid = s"article-$id"
+      write(dir / s"$id.scala",
+        s"""
+          | package sqwl.cms
+          | import scalatags.Text.all._
+          | import scalatex._
+          | import sqwl.cms.Category._
+          | import sqwl.cms.Tag._
+          | import sqwl.cms.Articles.article
+          | object `$aid` {
+          |   implicit val id = Articles.Id("$id")
+          |   twf("${p.toString}")
+          | }
+        """.stripMargin)
+      aid
+    }
+    write(dir / "initializer.scala",
+      s"""
+        | package sqwl.cms
+        | object InitializeContent {
+        |   def apply(): Unit = {
+        |     Seq(${ids mkString("`", "`, `", "`")})
+        |   }
+        | }
+      """.stripMargin)
+    Seq(PathRef(dir))
+  }
   override def ivyDeps = Agg(
     ivy"com.beachape::enumeratum:1.5.13"
   )