--- a/build.sc Sat Dec 26 11:39:56 2020 +0100
+++ b/build.sc Sat Dec 26 13:44:11 2020 +0100
@@ -11,7 +11,7 @@
import ammonite.ops._
import mill._
import mill.api.Loose
-import mill.define.{Input, Sources, Target}
+import mill.define.{Command, Input, Sources, Target}
import mill.scalajslib._
import mill.scalalib._
import mill.scalalib.publish._
@@ -23,10 +23,13 @@
val scalaJs = "0.6.33"
val scala211 = "2.11.12"
val scala212 = "2.12.12"
+ val scala213 = "2.13.4"
+ val scalatags = "0.9.2"
}
object D {
- val scalatags = ivy"com.lihaoyi::scalatags::0.6.8"
+ val scalatags211 = ivy"com.lihaoyi::scalatags::0.6.8"
+ val scalatags = ivy"com.lihaoyi::scalatags::${V.scalatags}"
}
def camelCase(s: String): String = {
@@ -39,6 +42,20 @@
inner(s toList) mkString ""
}
+val compilerOptions = Seq(
+ "-deprecation", // Emit warning and location for usages of deprecated APIs.
+ "-encoding", "utf-8", // Specify character encoding used by source files.
+ "-explaintypes", // Explain type errors in more detail.
+ "-feature", // Emit warning and location for usages of features that should be imported explicitly.
+ "-language:higherKinds", // Allow higher-kinded types
+ "-language:implicitConversions", // Allow definition of implicit functions called views
+ "-language:reflectiveCalls",
+ "-language:postfixOps",
+ "-unchecked", // Enable additional warnings where generated code depends on assumptions.
+ "-Xcheckinit", // Wrap field accessors to throw an exception on uninitialized access.
+ "-target:jvm-1.8"
+)
+
trait Common extends CrossSbtModule with PublishModule {
override def artifactName = "fatags"
@@ -57,20 +74,7 @@
)
)
- override def scalacOptions = T{Seq(
- "-deprecation", // Emit warning and location for usages of deprecated APIs.
- "-encoding", "utf-8", // Specify character encoding used by source files.
- "-explaintypes", // Explain type errors in more detail.
- "-feature", // Emit warning and location for usages of features that should be imported explicitly.
- "-language:higherKinds", // Allow higher-kinded types
- "-language:implicitConversions", // Allow definition of implicit functions called views
- "-language:reflectiveCalls",
- "-language:postfixOps",
- "-unchecked", // Enable additional warnings where generated code depends on assumptions.
- "-Xcheckinit", // Wrap field accessors to throw an exception on uninitialized access.
- "-Xfuture", // Turn on future language features.
- "-target:jvm-1.8"
- )}
+ override def scalacOptions: T[Seq[String]] = T{compilerOptions}
def hgId: Input[String] = T.input {
os.proc("hg", "id", "-i").call().out.text.trim
@@ -84,7 +88,9 @@
os.proc("hg", "id", "-t").call().out.text.trim.split(' ').headOption
}
- override def ivyDeps: Target[Loose.Agg[Dep]] = Agg(D.scalatags)
+ override def ivyDeps: Target[Loose.Agg[Dep]] = T{
+ if (scalaVersion() == V.scala211) Agg(D.scalatags211) else Agg(D.scalatags)
+ }
override def sources: Sources = T.sources{
super.sources() :+ PathRef(millSourcePath / 'shared / 'src / 'main / 'scala)
@@ -142,17 +148,31 @@
override def scalaJSVersion: Target[String] = V.scalaJs
}
-object jvm extends Cross[JvmModule](V.scala211, V.scala212)
-object js extends Cross[JsModule](V.scala211, V.scala212)
+object jvm extends Cross[JvmModule](V.scala211, V.scala212, V.scala213)
+object js extends Cross[JsModule](V.scala211, V.scala212, V.scala213)
-def publishLocal(): define.Command[Unit] = T.command{
+def compileAll(): Command[Unit] = T.command{
+ jvm(V.scala213).compile()
+ js(V.scala213).compile()
+ jvm(V.scala212).compile()
+ js(V.scala212).compile()
+ jvm(V.scala211).compile()
+ js(V.scala211).compile()
+ ()
+}
+
+def publishLocal(): Command[Unit] = T.command{
+ jvm(V.scala213).publishLocal()()
+ js(V.scala213).publishLocal()()
jvm(V.scala212).publishLocal()()
js(V.scala212).publishLocal()()
jvm(V.scala211).publishLocal()()
js(V.scala211).publishLocal()()
}
-def publishM2Local(p: os.Path): define.Command[Unit] = T.command{
+def publishM2Local(p: os.Path): Command[Unit] = T.command{
+ jvm(V.scala213).publishM2Local(p.toString)()
+ js(V.scala213).publishM2Local(p.toString)()
jvm(V.scala212).publishM2Local(p.toString)()
js(V.scala212).publishM2Local(p.toString)()
jvm(V.scala211).publishM2Local(p.toString)()
@@ -161,18 +181,13 @@
}
object example extends ScalaModule with ScalaJSModule {
- override def scalaVersion: Target[String] = T{V.scala212}
+ override def scalaVersion: Target[String] = T{V.scala213}
override def scalaJSVersion: Target[String] = V.scalaJs
+ override def scalacOptions: T[Seq[String]] = T{compilerOptions}
- /* Ugly hack to prevent
- * "Referring to non-existent method fontawesome.generic.FA... error"
- */
- //override def moduleDeps: Seq[PublishModule] = Seq(js(V.scala212))
- override def ivyDeps: Target[Loose.Agg[Dep]] = Agg(D.scalatags)
- override def sources: Sources = T.sources{super.sources() ++ js(V.scala212).sources()}
- override def generatedSources = T{js(V.scala212).generatedSources()}
+ override def moduleDeps: Seq[PublishModule] = Seq(js(V.scala213))
+
}
-
// vim: et ts=2 sw=2 syn=scala