build.sc
changeset 4 1a1347e8c5be
parent 3 48479e4b89d4
child 5 de7c56ce0654
--- a/build.sc	Thu Nov 22 13:15:29 2018 +0100
+++ b/build.sc	Thu Nov 29 12:20:20 2018 +0100
@@ -55,7 +55,7 @@
   )}
 }
 
-object jvm extends Common {
+object base extends Common {
   override def scalacPluginIvyDeps: Target[Loose.Agg[Dep]] = super.scalacPluginIvyDeps() ++ Agg(
     ivy"org.scalamacros:::paradise:2.1.0"
   )
@@ -72,11 +72,34 @@
   )
 
   override def scalacOptions = T{super.scalacOptions.map(_ :+
-    "-Xmacro-settings:conf.output.dir=jvm/resources"
+    "-Xmacro-settings:conf.output.dir=base/resources"
   )}
 
-  override def mainClass = Some("sqwl.cms.Server")
+}
+
+object content extends Common {
+  override def moduleDeps = Seq(base)
+  override def sources : Sources = T.sources{ millSourcePath / up / 'example / 'src }
+  override def ivyDeps = Agg(
+    ivy"com.beachape::enumeratum:1.5.13"
+  )
+}
 
+object app extends Common {
+  override def moduleDeps = Seq(content)
+  override def mainClass = Some("sqwl.cms.Main")
+
+  override def generatedSources: Target[Seq[PathRef]] = T{
+    val dir = T.ctx().dest
+    write(dir / "main.scala",
+      """
+        | package sqwl.cms
+        | object Main extends Server {
+        |   override def content: iContent = Content
+        | }
+      """.stripMargin)
+    Seq(PathRef(dir))
+  }
 }
 
 object js extends Common with ScalaJSModule {