forked from nrktkt/ninny-json
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.sc
134 lines (113 loc) · 3.7 KB
/
build.sc
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import mill._
import scalalib._
import $ivy.`com.lihaoyi::mill-contrib-scoverage:$MILL_VERSION`
import mill.contrib.scoverage.ScoverageModule
import mill.scalalib.publish._
import $ivy.`com.lihaoyi::mill-contrib-bloop:$MILL_VERSION`
import mill.define.{Segment, Segments}
import $file.forProductN
val `2.12` = "2.12.15"
val `2.13` = "2.13.7"
val `3` = "3.1.0"
val scalaTest = ivy"org.scalatest::scalatest:3.2.10"
trait PublishMod extends PublishModule {
def artifactName =
Segments(
millModuleSegments.value.filterNot(_.isInstanceOf[Segment.Cross]): _*
).parts.mkString("-")
def publishVersion = T.input(T.ctx().env("PUBLISH_VERSION"))
def pomSettings =
PomSettings(
description = "NoneIsNotNullY",
organization = "io.github.kag0",
url = "https://github.com/kag0/ninny-json",
Seq(License.Unlicense),
VersionControl.github("kag0", "ninny-json"),
Seq(Developer("kag0", "Nathan Fischer", "https://github.com/kag0"))
)
}
object ninny extends mill.Cross[Ninny](`2.12`, `2.13`, `3`)
class Ninny(val crossScalaVersion: String)
extends CrossScalaModule
with PublishMod { self =>
def scalacOptions =
Seq(
"-Xfatal-warnings",
"-feature",
"-unchecked",
"-deprecation"
) ++ (if (crossScalaVersion != `3`)
Seq("-Ywarn-macros:after", "-Ywarn-unused")
else None)
def ivyDeps =
Agg(
ivy"org.typelevel::jawn-parser:1.3.0",
ivy"com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-core:2.12.0",
ivy"org.scala-lang.modules::scala-collection-compat:2.6.0",
ivy"com.typesafe.scala-logging::scala-logging:3.9.4"
) ++ (if (crossScalaVersion != `3`)
Agg(ivy"com.chuusai::shapeless:2.3.7")
else None)
override def generatedSources =
T {
generateSources()
Seq(PathRef(T.dest / os.up / os.up / "generateSources" / "dest"))
}
def generateSources =
T {
os.write(
T.dest / "ProductToJson.scala",
forProductN.generateProductToJson
)
os.write(
T.dest / "ProductFromJson.scala",
forProductN.generateProductFromJson
)
os.write(
T.dest / "ProductToAndFromJson.scala",
forProductN.generateProductToAndFromJson
)
}
object test extends Tests with TestModule.ScalaTest {
def scalacOptions =
T(self.scalacOptions().filterNot(_ == "-Xfatal-warnings"))
def ivyDeps =
Agg(
ivy"org.json4s::json4s-native-core:4.0.3",
scalaTest
)
}
def scoverageVersion = "1.4.1"
}
object `play-compat` extends mill.Cross[PlayCompat](`2.12`, `2.13`)
class PlayCompat(val crossScalaVersion: String)
extends CrossScalaModule
with PublishMod {
def artifactName = "ninny-play-compat"
def moduleDeps = List(ninny(crossScalaVersion))
def ivyDeps = Agg(ivy"com.typesafe.play::play-json:2.9.2")
object test extends Tests {
def testFrameworks = Seq("org.scalatest.tools.Framework")
def ivyDeps = Agg(scalaTest)
}
}
object ubjson extends ScalaModule with PublishMod {
def scalaVersion = `2.13`
def artifactName = "ninny-ubjson"
def moduleDeps = List(ninny(`2.13`))
object test extends Tests with TestModule.ScalaTest {
def testFrameworks = Seq("org.scalatest.tools.Framework")
def ivyDeps = Agg(scalaTest)
}
}
object `script-kit` extends mill.Cross[ScriptKit](`2.12`, `2.13`)
class ScriptKit(val crossScalaVersion: String)
extends CrossScalaModule
with PublishMod {
def artifactName = "ninny-script-kit"
def moduleDeps = List(ninny(crossScalaVersion))
object test extends Tests with TestModule.ScalaTest {
def testFrameworks = Seq("org.scalatest.tools.Framework")
def ivyDeps = Agg(scalaTest)
}
}