1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
import mill.scalalib
import mill.define.Cross
import mill.scalalib.{Dep, TestModule, Module}
val jawn = Cross("2.10.6", "2.11.11", "2.12.3").map(new Jawn(_))
class Jawn(crossVersion: String) extends mill.Module{
trait JawnModule extends scalalib.SbtModule{ outer =>
def scalaVersion = crossVersion
def scalacOptions = Seq(
"-deprecation",
"-optimize",
"-unchecked"
)
def testProjectDeps: Seq[TestModule] = Nil
object test extends this.Tests{
def projectDeps = super.projectDeps ++ testProjectDeps
def ivyDeps = Seq(
Dep("org.scalatest", "scalatest", "3.0.3"),
Dep("org.scalacheck", "scalacheck", "1.13.5")
)
def testFramework = "org.scalatest.tools.Framework"
}
}
object Parser extends JawnModule{
def basePath = ammonite.ops.pwd / 'target / 'workspace / 'jawn / 'parser
}
object Util extends JawnModule{
def projectDeps = Seq(Parser)
def testProjectDeps = Seq(Parser.test)
def basePath = ammonite.ops.pwd / 'target / 'workspace / 'jawn / 'util
}
object Ast extends JawnModule{
def projectDeps = Seq(Parser, Util)
def testProjectDeps = Seq(Parser.test, Util.test)
def basePath = ammonite.ops.pwd / 'target / 'workspace / 'jawn / 'ast
}
class Support(name: String, ivyDeps0: Dep*) extends JawnModule{
def projectDeps = Seq[Module](Parser)
def basePath = ammonite.ops.pwd / 'target / 'workspace / 'jawn / 'support / name
def ivyDeps = ivyDeps0
}
object Argonaut extends Support("argonaut", Dep("io.argonaut", "argonaut", "6.2"))
object Json4s extends Support("json4s", Dep("org.json4s", "json4s-ast", "3.5.2"))
object Play extends Support("play"){
def ivyDeps = mill.T{
scalaBinaryVersion() match{
case "2.10" => Seq(Dep("com.typesafe.play", "play-json", "2.4.11"))
case "2.11" => Seq(Dep("com.typesafe.play", "play-json", "2.5.15"))
case _ => Seq(Dep("com.typesafe.play", "play-json", "2.6.0"))
}
}
}
object Rojoma extends Support("rojoma", Dep("com.rojoma", "rojoma-json", "2.4.3"))
object RojomaV3 extends Support("rojoma-v3", Dep("com.rojoma", "rojoma-json-v3", "3.7.2"))
object Spray extends Support("spray", Dep("io.spray", "spray-json", "1.3.3"))
}
|