build.sc
author Tomas Zeman <tzeman@volny.cz>
Thu, 29 Nov 2018 12:20:20 +0100
changeset 4 1a1347e8c5be
parent 3 48479e4b89d4
child 5 de7c56ce0654
permissions -rw-r--r--
Build modules: base, content, app; example content, minimal layout
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     1
import java.io.File
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     2
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     3
import ammonite.ops._
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     4
import coursier.maven.MavenRepository
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     5
import mill._
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     6
import mill.define.{Command, Input, Sources, Target}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     7
import mill.scalajslib._
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     8
import mill.scalalib._
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     9
import mill.scalalib.publish._
2
eb0fb99d0289 Ignore idea_modules, added scalatags dep.
Tomas Zeman <tzeman@volny.cz>
parents: 1
diff changeset
    10
import mill.util.Loose
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    11
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    12
import scala.sys
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    13
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    14
val appVersion = "18.12-SNAPSHOT"
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    15
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    16
val scalaJsVer = "0.6.25"
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    17
val scalaVer = "2.12.7"
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    18
val akkaVer = "2.4.20"
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    19
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    20
trait Common extends ScalaModule with PublishModule {
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    21
  val scalaVersion = scalaVer
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    22
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    23
  def publishVersion = appVersion 
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    24
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    25
  def pomSettings = PomSettings(
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    26
    description = "Content management system for SQWL",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    27
    organization = "net.tz",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    28
    url = "http://kvalitapracovnihozivota.vubp.cz",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    29
    licenses = Seq(License.`Apache-2.0`),
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    30
    versionControl = VersionControl(developerConnection = Some(
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    31
      "ssh://hg@bitbucket.org/tzeman/sqwl-cms")),
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    32
    developers = Seq(
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    33
      Developer("tzeman", "Tomas Zeman", "")
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    34
    )
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    35
  )
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    36
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    37
  override def artifactName = T{
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    38
    super.artifactName.map(_.flatMap(c =>
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    39
      if (c.isUpper) Seq('-', c.toLower) else Seq(c) ))
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    40
  }
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    41
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    42
  override def scalacOptions = T{Seq(
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    43
    "-deprecation",                      // Emit warning and location for usages of deprecated APIs.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    44
    "-encoding", "utf-8",                // Specify character encoding used by source files.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    45
    "-explaintypes",                     // Explain type errors in more detail.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    46
    "-feature",                          // Emit warning and location for usages of features that should be imported explicitly.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    47
    "-language:higherKinds",             // Allow higher-kinded types
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    48
    "-language:implicitConversions",     // Allow definition of implicit functions called views
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    49
    "-language:reflectiveCalls",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    50
    "-language:postfixOps",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    51
    "-unchecked",                        // Enable additional warnings where generated code depends on assumptions.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    52
    "-Xcheckinit",                       // Wrap field accessors to throw an exception on uninitialized access.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    53
    "-Xfuture",                          // Turn on future language features.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    54
    "-target:jvm-1.8",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    55
  )}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    56
}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    57
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    58
object base extends Common {
2
eb0fb99d0289 Ignore idea_modules, added scalatags dep.
Tomas Zeman <tzeman@volny.cz>
parents: 1
diff changeset
    59
  override def scalacPluginIvyDeps: Target[Loose.Agg[Dep]] = super.scalacPluginIvyDeps() ++ Agg(
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    60
    ivy"org.scalamacros:::paradise:2.1.0"
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    61
  )
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    62
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    63
  override def ivyDeps = Agg(
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    64
    ivy"com.wacai::config-annotation:0.3.6",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    65
    ivy"de.heikoseeberger::akka-http-json4s:1.22.0",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    66
    ivy"com.typesafe.akka::akka-slf4j:$akkaVer",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    67
    ivy"org.json4s::json4s-native:3.6.2",
2
eb0fb99d0289 Ignore idea_modules, added scalatags dep.
Tomas Zeman <tzeman@volny.cz>
parents: 1
diff changeset
    68
    ivy"ch.qos.logback:logback-classic:1.2.3",
3
48479e4b89d4 App skeleton
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    69
    ivy"com.lihaoyi::scalatags:0.6.7",
48479e4b89d4 App skeleton
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    70
    ivy"org.webjars:bootstrap:4.1.3",
48479e4b89d4 App skeleton
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    71
    ivy"org.webjars:font-awesome:5.5.0"
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    72
  )
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    73
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    74
  override def scalacOptions = T{super.scalacOptions.map(_ :+
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    75
    "-Xmacro-settings:conf.output.dir=base/resources"
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    76
  )}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    77
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    78
}
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    79
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    80
object content extends Common {
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    81
  override def moduleDeps = Seq(base)
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    82
  override def sources : Sources = T.sources{ millSourcePath / up / 'example / 'src }
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    83
  override def ivyDeps = Agg(
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    84
    ivy"com.beachape::enumeratum:1.5.13"
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    85
  )
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    86
}
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    87
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    88
object app extends Common {
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    89
  override def moduleDeps = Seq(content)
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    90
  override def mainClass = Some("sqwl.cms.Main")
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    91
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    92
  override def generatedSources: Target[Seq[PathRef]] = T{
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    93
    val dir = T.ctx().dest
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    94
    write(dir / "main.scala",
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    95
      """
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    96
        | package sqwl.cms
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    97
        | object Main extends Server {
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    98
        |   override def content: iContent = Content
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    99
        | }
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   100
      """.stripMargin)
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   101
    Seq(PathRef(dir))
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   102
  }
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   103
}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   104
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   105
object js extends Common with ScalaJSModule {
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   106
  def scalaJSVersion: Target[String] = scalaJsVer
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   107
}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   108
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   109
// vim: et ts=2 sw=2 syn=scala