-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathScalaBinaryVersion.scala
More file actions
78 lines (65 loc) · 2.19 KB
/
Copy pathScalaBinaryVersion.scala
File metadata and controls
78 lines (65 loc) · 2.19 KB
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
package org.podval.tools.build
sealed abstract class ScalaBinaryVersion(
name: String,
artifact: String,
scalaVersion: Option[Version],
val prefix: Version,
versionDefault: Version
) extends JavaDependency(
name = name,
group = ScalaBinaryVersion.group,
versionDefault = versionDefault,
artifact = artifact,
scalaVersion = scalaVersion
) derives CanEqual:
final val scalaVersionDefault: ScalaVersion.Known = ScalaVersion.Known(this, versionDefault)
final def is(version: Version): Boolean = version.startsWith(prefix) && isInRange(version)
def isInRange(version: Version): Boolean
def isScala3: Boolean
object ScalaBinaryVersion:
val group: String = "org.scala-lang"
def all: Seq[ScalaBinaryVersion] = Seq(
Scala3WithScala3Library,
Scala3WithScala2Library,
Scala2_13,
Scala2_12
)
sealed abstract class Scala3(
versionDefault: Version
) extends ScalaBinaryVersion(
artifact = "scala3-library",
scalaVersion = Some(Version("3")),
name = "Scala 3 Library.",
prefix = Version("3"),
versionDefault = versionDefault
):
final override def isScala3: Boolean = true
private val versionScala3LibraryCompiledWithScala3: Version = Version("3.8.0")
case object Scala3WithScala3Library extends Scala3(
versionDefault = Version("3.8.4")
):
override def isInRange(version: Version): Boolean = version >= versionScala3LibraryCompiledWithScala3
case object Scala3WithScala2Library extends Scala3(
versionDefault = Version("3.7.4")
):
override def isInRange(version: Version): Boolean = version < versionScala3LibraryCompiledWithScala3
sealed abstract class Scala2(
prefix: Version,
versionDefault: Version
) extends ScalaBinaryVersion(
artifact = "scala-library",
scalaVersion = None,
name = "Scala 2 Library.",
prefix = prefix,
versionDefault = versionDefault
):
final override def isInRange(version: Version): Boolean = true
final override def isScala3: Boolean = false
case object Scala2_13 extends Scala2(
prefix = Version("2.13"),
versionDefault = Version("2.13.18")
)
case object Scala2_12 extends Scala2(
prefix = Version("2.12"),
versionDefault = Version("2.12.21")
)