import mill._, scalalib._, scalajslib._, scalanativelib._, scalalib.publish._ val scalaVersions = Map( "2.13" -> "2.13.1", "2.12" -> "2.12.10", "2.11" -> "2.11.12", "2.10" -> "2.10.7" ) trait YamlesqueModule extends ScalaModule with PublishModule { def binVersion: String def scalaVersion = scalaVersions(binVersion) def millSourcePath = build.millSourcePath / "yamlesque" def scalacOptions = Seq("-feature", "-deprecation") def publishVersion = T.input{os.proc("git", "describe", "--dirty", "--match=v*").call().out.trim.tail} def pomSettings = PomSettings( description = "Simple YAML parsing.", organization = "io.crashbox", url = "https://github.com/jodersky/yamlesque", licenses = Seq(License.`Apache-2.0`), versionControl = VersionControl.github("jodersky", "yamlesque"), developers = Seq( Developer("jodersky", "Jakob Odersky","https://github.com/jodersky") ) ) } trait YamlesqueTestModule extends TestModule with ScalaModule { def millSourcePath = build.millSourcePath / "yamlesque" / "test" def ivyDeps = Agg(ivy"com.lihaoyi::utest::0.7.1") def testFrameworks = Seq("utest.runner.Framework") } class YamlesqueJVMModule(val binVersion: String) extends YamlesqueModule { object test extends Tests with YamlesqueTestModule } class YamlesqueJSModule(val binVersion: String) extends YamlesqueModule with ScalaJSModule { def scalaJSVersion = "0.6.29" object test extends Tests with YamlesqueTestModule } class YamlesqueNativeModule(val binVersion: String) extends YamlesqueModule with ScalaNativeModule { def scalaNativeVersion = "0.3.8" def releaseMode = scalanativelib.api.ReleaseMode.Release object test extends Tests with YamlesqueTestModule } object yamlesque extends Module { object jvm extends Cross[YamlesqueJVMModule]("2.13", "2.12", "2.11", "2.10") object js extends Cross[YamlesqueJSModule]("2.13", "2.12", "2.11") object native extends Cross[YamlesqueNativeModule]("2.11") } object site extends ScalaJSModule { def scalaVersion = scalaVersions("2.13") def scalaJSVersion = "0.6.29" def moduleDeps = Seq(yamlesque.js("2.13")) def ivyDeps = Agg( ivy"com.lihaoyi::ujson::0.8.0", ivy"org.scala-js::scalajs-dom::0.9.7" ) }