Repository navigation
Expand file tree
/
Copy pathbuild.sbt
More file actions
65 lines (56 loc) · 2.09 KB
/
Copy pathbuild.sbt
File metadata and controls
65 lines (56 loc) · 2.09 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
name := "EffectOrientedProgramming"
scalaVersion := "3.7.1"
val zioVersion = "2.1.24"
libraryDependencies ++= Seq(
"dev.zio" %% "zio" % zioVersion,
"dev.zio" %% "zio-direct" % "1.0.0-RC7",
"dev.zio" %% "zio-config" % "4.0.4",
"dev.zio" %% "zio-config-magnolia" % "4.0.4",
"dev.zio" %% "zio-config-typesafe" % "4.0.4",
"dev.zio" %% "zio-cache" % "0.2.4",
"nl.vroste" %% "rezilience" % "0.10.5",
"dev.zio" %% "zio-test" % zioVersion % Test,
"dev.zio" %% "zio-test-sbt" % zioVersion % Test,
)
fork := true
// running the examples requires Java 11 or newer
initialize := {
initialize.value
val required = VersionNumber("11")
val current = VersionNumber(sys.props("java.specification.version"))
assert(current.get(0).get >= required.get(0).get, s"Java $required or above required")
}
lazy val runMainClassesDoesNotTolerateFailures = taskKey[Unit]("Print main classes")
runMainClassesDoesNotTolerateFailures := Def.taskDyn {
val s: TaskStreams = streams.value
val classes = (Compile/discoveredMainClasses).value
val tasks = classes.map { className =>
Def.task {
try {
s.log.info(s"Running $className")
(Compile/runMain).toTask(" " + className).value
} catch {
case e: Exception =>
s.log.error(s"Failure when running $className: ${e.getMessage}")
}
}
}
Def.sequential(tasks)
}.value
// We need this version because many of the examples are expected to fail
lazy val runMainClassesToleratesFailures = taskKey[Unit]("Run all main classes")
runMainClassesToleratesFailures := {
val log = streams.value.log
val discovered: Seq[String] = (Compile/discoveredMainClasses).value
// Get the classpath
val classpath = Attributed.data((Compile/fullClasspath).value).mkString(java.io.File.pathSeparator)
discovered.foreach { className =>
log.info(s"Running $className")
val result = Fork.java.fork(ForkOptions(), Seq("-cp", classpath, className)).exitValue()
if (result != 0) {
log.error(s"Class $className failed with exit code $result")
} else {
log.info(s"Class $className completed successfully")
}
}
}