# HG changeset patch # User Tomas Zeman # Date 1552566340 -3600 # Node ID 3a70d40db0fdc3e605375353e4c0b64cc7a5588b # Parent 5f36886fdb1b0512b1c3145cef2a9d165a8fae30 Build skeleton diff -r 5f36886fdb1b -r 3a70d40db0fd build.sc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build.sc Thu Mar 14 13:25:40 2019 +0100 @@ -0,0 +1,96 @@ +// mill 0.3.6 + +import ammonite.ops._ +import mill._ +import mill.define.{Input, Sources, Target} +import mill.scalajslib._ +import mill.scalalib._ +import mill.scalalib.publish._ + +import scala.language.postfixOps + +object V { + val spss4s = "0.1-SNAPSHOT" + val scalaJs = "0.6.26" + val scala211 = "2.11.12" + val scala212 = "2.12.8" +} + +object D { + val spssReader = ivy"com.bedatadriven.spss:spss-reader:1.2" +} + +trait Common extends CrossScalaModule with PublishModule { + + def publishVersion: Input[String] = T.input{ + val tv = hgTag() map(v => "-" + v.replace(".patch", "")) getOrElse "" + V.spss4s.replace("SNAPSHOT", s"${hgNum()}-${hgId()}$tv") + } + + def pomSettings = PomSettings( + description = "SPSS reader for Scala", + organization = "net.tz", + url = "https://bitbucket.org/tzeman/spss4s", + licenses = Seq(License.`Apache-2.0`), + versionControl = VersionControl(developerConnection = Some( + "ssh://hg@bitbucket.org/tzeman/spss4s")), + 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 + "-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", + )} + + def hgId: Input[String] = T.input { + os.proc("hg", "id", "-i").call().out.string.trim + } + + def hgNum: Input[String] = T.input { + os.proc("hg", "id", "-n").call().out.string.trim + } + + def hgTag: Input[Option[String]] = T.input { + os.proc("hg", "id", "-t").call().out.string.trim.split(' ').headOption + } + + override def sources: Sources = T.sources( + millSourcePath / 'src, millSourcePath / 'shared + ) + +} + +class JvmModule(val crossScalaVersion: String) extends Common { + + override def ivyDeps = Agg(D.spssReader) + +} + +class JsModule(val crossScalaVersion: String) extends ScalaJSModule + with Common { + 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) + +def publishLocal(): define.Command[Unit] = T.command{ + jvm(V.scala212).publishLocal()() + js(V.scala212).publishLocal()() + jvm(V.scala211).publishLocal()() + js(V.scala211).publishLocal()() +} + +// vim: et ts=2 sw=2 syn=scala diff -r 5f36886fdb1b -r 3a70d40db0fd js/shared --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/shared Thu Mar 14 13:25:40 2019 +0100 @@ -0,0 +1,1 @@ +../shared \ No newline at end of file diff -r 5f36886fdb1b -r 3a70d40db0fd jvm/shared --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jvm/shared Thu Mar 14 13:25:40 2019 +0100 @@ -0,0 +1,1 @@ +../shared \ No newline at end of file