/*
* REPL:
*
* ./mill --repl -w
*
* Generate Idea project:
*
* ./mill mill.scalalib.GenIdea/idea
*
*/
import mill._
import mill.api.Loose
import mill.define.{Command, Target}
import mill.scalajslib._
import mill.scalalib._
import mill.scalalib.publish._
object V {
val visjs = "0.3"
val scalaJs = "1.12.0"
val scala211 = "2.11.12"
val scala212 = "2.12.17"
val scala213 = "2.13.10"
}
object D {
val scalaJsDom = ivy"org.scala-js::scalajs-dom::1.2.0"
}
class VisJs(val crossScalaVersion: String) extends CrossScalaModule with
ScalaJSModule with PublishModule {
override def artifactName: T[String] = "visjs"
override def scalaJSVersion: Target[String] = V.scalaJs
override def publishVersion: Target[String] = V.visjs
override def pomSettings = PomSettings(
description = "Scala.js library facade for vis.js",
organization = "cz.functionals",
url = "https://hg.functionals.cz/visjs",
licenses = Seq(License.`Apache-2.0`),
versionControl = VersionControl(developerConnection = Some(
"ssh://tzeman@hg.functionals.cz/repos/public/visjs")),
developers = Seq(
Developer("tzeman", "Tomas Zeman", "")
)
)
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
"-unchecked", // Enable additional warnings where generated code depends on assumptions.
"-Xcheckinit" // Wrap field accessors to throw an exception on uninitialized access.
)}
override def ivyDeps: Target[Loose.Agg[Dep]] = Agg(D.scalaJsDom)
}
object visjs extends Cross[VisJs](V.scala211, V.scala212, V.scala213)
def compileAll(): Command[Unit] = T.command{
visjs(V.scala211).compile()
visjs(V.scala212).compile()
visjs(V.scala213).compile()
()
}
def publishLocal(): Command[Unit] = T.command{
visjs(V.scala211).publishLocal()()
visjs(V.scala212).publishLocal()()
visjs(V.scala213).publishLocal()()
()
}
def publishM2Local(p: os.Path): Command[Unit] = T.command{
visjs(V.scala211).publishM2Local(p.toString)()
visjs(V.scala212).publishM2Local(p.toString)()
visjs(V.scala213).publishM2Local(p.toString)()
()
}
// vim: et ts=2 sw=2 syn=scala