build.sc
author Tomas Zeman <tomas@functionals.cz>
Tue, 24 Nov 2020 11:17:26 +0100
changeset 31 5c4364d6e726
parent 30 12cda49d6c84
child 32 2d14f02ba3bd
permissions -rw-r--r--
SQWL#2003 Studie -> Projekt
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     1
import ammonite.ops._
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     2
import mill._
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
     3
import mill.api.Loose
22
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
     4
import mill.define.{Input, Sources, Target}
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     5
import mill.scalajslib._
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     6
import mill.scalalib._
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     7
import mill.scalalib.publish._
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     8
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
     9
val appVersion = "20.12-SNAPSHOT"
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    10
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    11
val scalaJsVer = "0.6.33"
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    12
val scalaVer = "2.12.12"
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    13
val akkaVer = "2.6.10"
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    14
val akkaHttp = "10.2.1"
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    15
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    16
trait Common extends ScalaModule with PublishModule {
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    17
  val scalaVersion = scalaVer
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    18
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
    19
  def publishVersion: Target[String] = appVersion
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    20
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    21
  def pomSettings = PomSettings(
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    22
    description = "Content management system for SQWL",
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    23
    organization = "cz.functionals",
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    24
    url = "http://kvalitapracovnihozivota.vubp.cz",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    25
    licenses = Seq(License.`Apache-2.0`),
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    26
    versionControl = VersionControl(developerConnection = Some(
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    27
      "ssh://tzeman@hg.functionals.cz/repos/public/sqwl-cms")),
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    28
    developers = Seq(
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    29
      Developer("tzeman", "Tomas Zeman", "")
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    30
    )
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    31
  )
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    32
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    33
  override def artifactName: Target[String] = T{
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    34
    super.artifactName().flatMap(c =>
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    35
      if (c.isUpper) Seq('-', c.toLower) else Seq(c)).mkString
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    36
  }
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    37
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    38
  override def scalacOptions = T{Seq(
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    39
    "-deprecation",                      // Emit warning and location for usages of deprecated APIs.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    40
    "-encoding", "utf-8",                // Specify character encoding used by source files.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    41
    "-explaintypes",                     // Explain type errors in more detail.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    42
    "-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
    43
    "-language:higherKinds",             // Allow higher-kinded types
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    44
    "-language:implicitConversions",     // Allow definition of implicit functions called views
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    45
    "-language:reflectiveCalls",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    46
    "-language:postfixOps",
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    47
    "-unchecked",                        // Enable additional warnings where generated code depends on assumptions.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    48
    "-Xcheckinit",                       // Wrap field accessors to throw an exception on uninitialized access.
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    49
    "-Xfuture",                          // Turn on future language features.
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    50
    "-target:jvm-1.8"
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    51
  )}
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    52
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    53
  def hgId: Input[String] = T.input {
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    54
    os.proc("hg", "id", "-i").call().out.trim
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    55
  }
26
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
    56
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
    57
  def hgNum: Input[String] = T.input {
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    58
    os.proc("hg", "id", "-n").call().out.trim
26
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
    59
  }
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
    60
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
    61
  def hgTag: Input[Option[String]] = T.input {
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    62
    os.proc("hg", "id", "-t").call().out.trim.split(' ').headOption
26
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
    63
  }
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
    64
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    65
}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    66
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    67
trait Versions {
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    68
  //val bootstrap = "4.1.3"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    69
  val bootstrap = "3.3.7"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    70
  val fontAwesome = "5.5.0"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    71
  val jquery = "3.3.1-1"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    72
}
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    73
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    74
object base extends Common with Versions {
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
    75
  override def scalacPluginIvyDeps: Target[Loose.Agg[Dep]] =
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
    76
    super.scalacPluginIvyDeps() ++ Agg(
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    77
      ivy"org.scalamacros:::paradise:2.1.1"
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
    78
    )
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    79
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    80
  override def ivyDeps = Agg(
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    81
    ivy"com.wacai::config-annotation:0.3.6",
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    82
    ivy"com.typesafe.akka::akka-http:$akkaHttp",
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    83
    ivy"com.typesafe.akka::akka-slf4j:$akkaVer",
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
    84
    ivy"com.typesafe.akka::akka-stream:$akkaVer",
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    85
    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
    86
    ivy"ch.qos.logback:logback-classic:1.2.3",
3
48479e4b89d4 App skeleton
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    87
    ivy"com.lihaoyi::scalatags:0.6.7",
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    88
    ivy"org.webjars:bootstrap:$bootstrap",
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    89
    ivy"org.webjars:font-awesome:$fontAwesome",
16
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    90
    ivy"org.webjars:jquery:$jquery",
4556852613a9 Scalatex based article implementation
Tomas Zeman <tzeman@volny.cz>
parents: 5
diff changeset
    91
    ivy"com.lihaoyi::scalatex-api:0.3.12"
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    92
  )
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    93
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    94
  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
    95
    "-Xmacro-settings:conf.output.dir=base/resources"
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    96
  )}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    97
5
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    98
  override def generatedSources: Target[Seq[PathRef]] = T{
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
    99
    val dir = T.ctx().dest
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   100
    write(dir / "buildInfo.scala",
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   101
      s"""
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   102
        | package sqwl.cms
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   103
        | object BuildInfo {
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   104
        |   object versions {
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   105
        |     val bootstrap = "$bootstrap"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   106
        |     val fontAwesome = "$fontAwesome"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   107
        |     val jquery = "$jquery"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   108
        |   }
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   109
        |
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   110
        |   val hgId = "${hgId()}"
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   111
        | }
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   112
      """.stripMargin)
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   113
    Seq(PathRef(dir))
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   114
  }
de7c56ce0654 Base layout, build info, UI libs
Tomas Zeman <tzeman@volny.cz>
parents: 4
diff changeset
   115
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   116
}
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   117
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   118
trait Content extends Common {
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   119
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   120
  override def moduleDeps = Seq(base)
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   121
22
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   122
  def contentSources: Sources
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   123
18
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   124
  override def generatedSources: Target[Seq[PathRef]] = T{
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   125
    val dir = T.ctx().dest
22
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   126
    val src = contentSources() map(_.path)
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
   127
    val ids = src flatMap(ls! _ filter(_.ext endsWith "scalatex") map { p =>
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
   128
      val id = p.last replaceAllLiterally (".scalatex", "")
18
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   129
      val aid = s"article-$id"
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   130
      write(dir / s"$id.scala",
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   131
        s"""
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   132
          | package sqwl.cms
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   133
          | import scalatags.Text.all._
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   134
          | import scalatex._
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   135
          | import sqwl.cms.Category._
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   136
          | import sqwl.cms.Tag._
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   137
          | import sqwl.cms.Articles.article
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   138
          | object `$aid` {
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   139
          |   implicit val id = Articles.Id("$id")
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   140
          |   twf("${p.toString}")
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   141
          | }
22
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   142
          |
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   143
          |/*
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
   144
          |${os.read(p)}
22
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   145
          |*/
18
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   146
        """.stripMargin)
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   147
      aid
22
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   148
    })
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   149
18
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   150
    write(dir / "initializer.scala",
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   151
      s"""
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   152
        | package sqwl.cms
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   153
        | object InitializeContent {
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   154
        |   def apply(): Unit = {
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   155
        |     Seq(${ids mkString("`", "`, `", "`")})
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   156
        |   }
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   157
        | }
8cfd67425811 Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents: 16
diff changeset
   158
      """.stripMargin)
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   159
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   160
    write(dir / "main.scala",
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   161
      """
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   162
        | package sqwl.cms
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   163
        | object Main extends Server {
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   164
        |   override def content: iContent = Content
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   165
        | }
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   166
      """.stripMargin)
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   167
4
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   168
    Seq(PathRef(dir))
1a1347e8c5be Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
   169
  }
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   170
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
   171
  override def mainClass: T[Option[String]] = Some("sqwl.cms.Main")
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   172
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   173
  override def ivyDeps = Agg(
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   174
    ivy"com.beachape::enumeratum:1.5.13"
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   175
  )
26
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   176
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   177
  def assemblyName: Target[String] = T{
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   178
    val tg = hgTag().map(v => s"-${v.replace(".patch", "")}") getOrElse ""
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   179
    val ver = publishVersion().replace("SNAPSHOT", s"${hgNum()}-${hgId()}$tg")
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   180
    s"cms-$ver"
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   181
  }
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   182
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   183
  override def assembly: Target[PathRef] = T{
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   184
    val out = T.ctx().dest / s"${assemblyName()}.jar"
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   185
    os.move(super.assembly().path, out)
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   186
    PathRef(out)
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   187
  }
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   188
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   189
}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   190
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   191
object example extends Content {
22
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   192
  def contentSources: Sources =
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   193
    T.sources{ millSourcePath / up / 'example / 'content }
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   194
}
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   195
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   196
object production extends Content {
22
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   197
  def contentSources: Sources =
b5c85ad66f17 build.sc: recompile if .scalatex file changes
Tomas Zeman <tzeman@volny.cz>
parents: 20
diff changeset
   198
    T.sources{ millSourcePath / up / 'production / 'content }
26
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   199
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   200
  def hgProdId: Input[String] = T.input {
30
12cda49d6c84 SQWL#2016 - Project build update
Tomas Zeman <tomas@functionals.cz>
parents: 28
diff changeset
   201
    os.proc("hg", "id", "-i", "--cwd", "production").call().out.trim
26
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   202
  }
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   203
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   204
  override def assemblyName: Target[String] = T{
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   205
    s"${super.assemblyName()}-${hgProdId()}"
4978df5ebf0a build.sc: hg info -> assembly name
Tomas Zeman <tzeman@volny.cz>
parents: 24
diff changeset
   206
  }
20
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   207
}
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   208
677672b9e386 Build split: example + production
Tomas Zeman <tzeman@volny.cz>
parents: 18
diff changeset
   209
1
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   210
object js extends Common with ScalaJSModule {
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   211
  def scalaJSVersion: Target[String] = scalaJsVer
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   212
}
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   213
5a1fe2302fb4 Project setup
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   214
// vim: et ts=2 sw=2 syn=scala