@@ -12,6 +12,16 @@ import scala.concurrent.duration.DurationInt
12
12
13
13
import java .io .File
14
14
15
+ object Versions {
16
+ def scala = " 3.3.4"
17
+ def scalaCli = " 1.5.1"
18
+ def graalVmVersion = " 22.1.0"
19
+ def coursier = " 2.1.14"
20
+ def osLib = " 0.11.3"
21
+ def uTest = " 0.8.4"
22
+ def jline = " 3.25.0"
23
+ }
24
+
15
25
trait JavaMainClassNativeImage extends NativeImage {
16
26
17
27
def nativeImageOptions = T {
@@ -20,8 +30,7 @@ trait JavaMainClassNativeImage extends NativeImage {
20
30
)
21
31
}
22
32
def nativeImagePersist = System .getenv(" CI" ) != null
23
- def graalVmVersion = " 22.1.0"
24
- def nativeImageGraalVmJvmId = s " graalvm-java17: $graalVmVersion"
33
+ def nativeImageGraalVmJvmId = s " graalvm-java17: ${Versions .graalVmVersion}"
25
34
def nativeImageName = " java-class-name"
26
35
def nativeImageMainClass = " scala.cli.javaclassname.JavaClassName"
27
36
@@ -37,17 +46,30 @@ trait JavaMainClassNativeImage extends NativeImage {
37
46
}
38
47
}
39
48
40
- object `scala3-graal-processor` extends ScalaModule {
41
- def scalaVersion = " 3.3.3"
42
- def mainClass = Some (" scala.cli.graal.CoursierCacheProcessor" )
43
- def ivyDeps = Agg (
44
- ivy " org.virtuslab.scala-cli::scala3-graal:1.5.1 "
49
+ trait JavaClassNameModule extends ScalaModule {
50
+ override def scalaVersion = Versions .scala
51
+ override def transitiveIvyDeps = T {
52
+ super .transitiveIvyDeps()
53
+ .map(_.exclude(" org.jline" -> " jline-reader" ))
54
+ .map(_.exclude(" org.jline" -> " jline-terminal" ))
55
+ .map(_.exclude(" org.jline" -> " jline-terminal-jna" ))
56
+ }
57
+ def jlineDeps = Agg (
58
+ ivy " org.jline:jline-reader: ${Versions .jline}" ,
59
+ ivy " org.jline:jline-terminal: ${Versions .jline}" ,
60
+ ivy " org.jline:jline-terminal-jna: ${Versions .jline}"
45
61
)
62
+ override def ivyDeps = super .ivyDeps() ++ jlineDeps
46
63
}
47
64
48
- object `java-class-name` extends ScalaModule with JavaMainClassNativeImage with JavaClassNamePublishModule {
49
- def scalaVersion = " 3.3.3"
65
+ object `scala3-graal-processor` extends JavaClassNameModule {
66
+ override def mainClass = Some (" scala.cli.graal.CoursierCacheProcessor" )
67
+ override def ivyDeps = jlineDeps ++ Agg (
68
+ ivy " org.virtuslab.scala-cli::scala3-graal: ${Versions .scalaCli}"
69
+ )
70
+ }
50
71
72
+ object `java-class-name` extends JavaClassNameModule with JavaMainClassNativeImage with JavaClassNamePublishModule {
51
73
def nativeImageClassPath = T {
52
74
// adapted from https://github.com/VirtusLab/scala-cli/blob/b19086697401827a6f8185040ceb248d8865bf21/build.sc#L732-L744
53
75
@@ -69,11 +91,11 @@ object `java-class-name` extends ScalaModule with JavaMainClassNativeImage with
69
91
System .err.println(s " $f" )
70
92
cp.split(File .pathSeparator).toSeq.map(p => mill.PathRef (os.Path (p)))
71
93
}
72
- def ivyDeps = super .ivyDeps() ++ Seq (
73
- ivy " org.scala-lang::scala3-compiler: ${scalaVersion() }"
94
+ override def ivyDeps = super .ivyDeps() ++ jlineDeps ++ Agg (
95
+ ivy " org.scala-lang::scala3-compiler: ${Versions .scala }"
74
96
)
75
- def compileIvyDeps = super .compileIvyDeps() ++ Seq (
76
- ivy " org.graalvm.nativeimage:svm: $graalVmVersion"
97
+ override def compileIvyDeps = super .compileIvyDeps() ++ Agg (
98
+ ivy " org.graalvm.nativeimage:svm: ${ Versions . graalVmVersion} "
77
99
)
78
100
79
101
object static extends JavaMainClassNativeImage {
@@ -91,7 +113,7 @@ object `java-class-name` extends ScalaModule with JavaMainClassNativeImage with
91
113
Some (
92
114
NativeImage .linuxStaticParams(
93
115
" scala-cli-base-musl:latest" ,
94
- s " https://github.com/coursier/coursier/releases/download/v $csDockerVersion /cs-x86_64-pc-linux.gz "
116
+ s " https://github.com/coursier/coursier/releases/download/v ${ Versions .coursier} /cs-x86_64-pc-linux.gz "
95
117
)
96
118
)
97
119
}
@@ -109,19 +131,18 @@ object `java-class-name` extends ScalaModule with JavaMainClassNativeImage with
109
131
def nativeImageDockerParams = Some (
110
132
NativeImage .linuxMostlyStaticParams(
111
133
" ubuntu:18.04" , // TODO Pin that?
112
- s " https://github.com/coursier/coursier/releases/download/v $csDockerVersion /cs-x86_64-pc-linux.gz "
134
+ s " https://github.com/coursier/coursier/releases/download/v ${ Versions .coursier} /cs-x86_64-pc-linux.gz "
113
135
)
114
136
)
115
137
}
116
138
}
117
139
118
- object `java-class-name-tests` extends ScalaModule with SbtModule {
119
- def scalaVersion = " 3.3.3"
140
+ object `java-class-name-tests` extends JavaClassNameModule with SbtModule {
120
141
trait Tests extends ScalaModule with super .SbtModuleTests with TestModule .Utest {
121
142
def launcher : T [PathRef ]
122
- def ivyDeps = super .ivyDeps() ++ Seq (
123
- ivy " com.lihaoyi::os-lib:0.11.3 " ,
124
- ivy " com.lihaoyi::utest:0.8.4 "
143
+ def ivyDeps = super .ivyDeps() ++ jlineDeps ++ Seq (
144
+ ivy " com.lihaoyi::os-lib: ${ Versions .osLib} " ,
145
+ ivy " com.lihaoyi::utest: ${ Versions .uTest} "
125
146
)
126
147
def testFramework = " utest.runner.Framework"
127
148
def forkEnv = super .forkEnv() ++ Seq (
@@ -141,8 +162,6 @@ object `java-class-name-tests` extends ScalaModule with SbtModule {
141
162
}
142
163
}
143
164
144
- def csDockerVersion = " 2.1.14"
145
-
146
165
def publishVersion0 = T {
147
166
val state = VcsVersion .vcsState()
148
167
if (state.commitsSinceLastTag > 0 ) {
0 commit comments