15 import mill.scalalib._ |
15 import mill.scalalib._ |
16 import mill.scalalib.publish._ |
16 import mill.scalalib.publish._ |
17 |
17 |
18 object V { |
18 object V { |
19 val app = "0.3-SNAPSHOT" |
19 val app = "0.3-SNAPSHOT" |
20 val scalaJs = "0.6.33" |
|
21 val scala211 = "2.11.12" |
20 val scala211 = "2.11.12" |
22 val scala212 = "2.12.12" |
21 val scala212 = "2.12.12" |
|
22 val scala213 = "2.13.4" |
|
23 val scalaJs06 = "0.6.33" |
|
24 val scalaJs = "1.3.1" |
|
25 val scalatags = "0.9.2" |
23 } |
26 } |
24 |
27 |
25 object D { |
28 object D { |
26 val scalatags = ivy"com.lihaoyi::scalatags::0.6.8" |
29 val scalatags211 = ivy"com.lihaoyi::scalatags::0.6.8" |
|
30 val scalatags = ivy"com.lihaoyi::scalatags::${V.scalatags}" |
27 } |
31 } |
28 |
32 |
29 trait Common extends CrossSbtModule with PublishModule { |
33 trait Common extends CrossSbtModule with PublishModule { |
30 |
34 |
31 def pomSettings: T[PomSettings] = PomSettings( |
35 def pomSettings: T[PomSettings] = PomSettings( |
51 "-language:implicitConversions", // Allow definition of implicit functions called views |
55 "-language:implicitConversions", // Allow definition of implicit functions called views |
52 "-language:reflectiveCalls", |
56 "-language:reflectiveCalls", |
53 "-language:postfixOps", |
57 "-language:postfixOps", |
54 "-unchecked", // Enable additional warnings where generated code depends on assumptions. |
58 "-unchecked", // Enable additional warnings where generated code depends on assumptions. |
55 "-Xcheckinit", // Wrap field accessors to throw an exception on uninitialized access. |
59 "-Xcheckinit", // Wrap field accessors to throw an exception on uninitialized access. |
56 "-Xfuture", // Turn on future language features. |
|
57 "-target:jvm-1.8" |
60 "-target:jvm-1.8" |
58 )} |
61 )} |
59 |
62 |
60 def hgId: Input[String] = T.input { |
63 def hgId: Input[String] = T.input { |
61 os.proc("hg", "id", "-i").call().out.text.trim |
64 os.proc("hg", "id", "-i").call().out.text.trim |
69 def hgTag: Input[Option[String]] = T.input { |
72 def hgTag: Input[Option[String]] = T.input { |
70 os.proc("hg", "id", "-t").call().out.text.trim.split(' ').filterNot(v => |
73 os.proc("hg", "id", "-t").call().out.text.trim.split(' ').filterNot(v => |
71 maskedTags contains v).headOption |
74 maskedTags contains v).headOption |
72 } |
75 } |
73 |
76 |
74 override def ivyDeps: Target[Loose.Agg[Dep]] = Agg(D.scalatags) |
77 override def ivyDeps: Target[Loose.Agg[Dep]] = T{ |
|
78 if (scalaVersion() == V.scala211) Agg(D.scalatags211) else Agg(D.scalatags) |
|
79 } |
75 |
80 |
76 override def sources: Sources = T.sources{ |
81 override def sources: Sources = T.sources{ |
77 super.sources() :+ PathRef(millSourcePath / 'shared / 'src / 'main / 'scala) |
82 super.sources() :+ PathRef(millSourcePath / 'shared / 'src / 'main / 'scala) |
78 } |
83 } |
79 |
84 |
82 V.app.replace("SNAPSHOT", s"${hgNum()}-${hgId()}$tv") |
87 V.app.replace("SNAPSHOT", s"${hgNum()}-${hgId()}$tv") |
83 } |
88 } |
84 } |
89 } |
85 |
90 |
86 class JvmModule(val crossScalaVersion: String) extends Common |
91 class JvmModule(val crossScalaVersion: String) extends Common |
87 class JsModule(val crossScalaVersion: String) extends ScalaJSModule |
92 class JsModule(val crossScalaVersion: String, crossJSVersion: String) |
88 with Common { |
93 extends ScalaJSModule with Common { |
89 override def scalaJSVersion: Target[String] = V.scalaJs |
94 |
|
95 override def scalaJSVersion: Target[String] = crossJSVersion |
|
96 |
|
97 override def millSourcePath = super.millSourcePath / os.up |
90 } |
98 } |
91 |
99 |
92 object jvm extends Cross[JvmModule](V.scala211, V.scala212) |
100 object jvm extends Cross[JvmModule](V.scala211, V.scala212, V.scala213) |
93 object js extends Cross[JsModule](V.scala211, V.scala212) |
101 object js extends Cross[JsModule]( |
|
102 V.scala211 -> V.scalaJs06, |
|
103 V.scala212 -> V.scalaJs06, |
|
104 V.scala212 -> V.scalaJs, |
|
105 V.scala213 -> V.scalaJs06, |
|
106 V.scala213 -> V.scalaJs |
|
107 ) |
94 |
108 |
95 def compileAll(): Command[Unit] = T.command{ |
109 def compileAll(): Command[Unit] = T.command{ |
|
110 jvm(V.scala213).compile() |
|
111 js(V.scala213, V.scalaJs).compile() |
|
112 js(V.scala213, V.scalaJs06).compile() |
96 jvm(V.scala212).compile() |
113 jvm(V.scala212).compile() |
97 js(V.scala212).compile() |
114 js(V.scala212, V.scalaJs).compile() |
|
115 js(V.scala212, V.scalaJs06).compile() |
98 jvm(V.scala211).compile() |
116 jvm(V.scala211).compile() |
99 js(V.scala211).compile() |
117 js(V.scala211, V.scalaJs06).compile() |
100 () |
118 () |
101 } |
119 } |
102 |
120 |
103 def publishLocal(): Command[Unit] = T.command{ |
121 def publishLocal(): Command[Unit] = T.command{ |
|
122 jvm(V.scala213).publishLocal()() |
|
123 js(V.scala213, V.scalaJs).publishLocal()() |
|
124 js(V.scala213, V.scalaJs06).publishLocal()() |
104 jvm(V.scala212).publishLocal()() |
125 jvm(V.scala212).publishLocal()() |
105 js(V.scala212).publishLocal()() |
126 js(V.scala212, V.scalaJs).publishLocal()() |
|
127 js(V.scala212, V.scalaJs06).publishLocal()() |
106 jvm(V.scala211).publishLocal()() |
128 jvm(V.scala211).publishLocal()() |
107 js(V.scala211).publishLocal()() |
129 js(V.scala211, V.scalaJs06).publishLocal()() |
108 () |
|
109 } |
130 } |
110 |
131 |
111 def publishM2Local(p: os.Path): Command[Unit] = T.command{ |
132 def publishM2Local(p: os.Path): Command[Unit] = T.command{ |
|
133 jvm(V.scala213).publishM2Local(p.toString)() |
|
134 js(V.scala213, V.scalaJs).publishM2Local(p.toString)() |
|
135 js(V.scala213, V.scalaJs06).publishM2Local(p.toString)() |
112 jvm(V.scala212).publishM2Local(p.toString)() |
136 jvm(V.scala212).publishM2Local(p.toString)() |
113 js(V.scala212).publishM2Local(p.toString)() |
137 js(V.scala212, V.scalaJs).publishM2Local(p.toString)() |
|
138 js(V.scala212, V.scalaJs06).publishM2Local(p.toString)() |
114 jvm(V.scala211).publishM2Local(p.toString)() |
139 jvm(V.scala211).publishM2Local(p.toString)() |
115 js(V.scala211).publishM2Local(p.toString)() |
140 js(V.scala211, V.scalaJs06).publishM2Local(p.toString)() |
116 () |
141 () |
117 } |
142 } |
118 |
143 |
119 // vim: et ts=2 sw=2 syn=scala |
144 // vim: et ts=2 sw=2 syn=scala |