Skip to content

Commit 3f52ac7

Browse files
committed
Build: Update dependencies
Update a subset of dependencies. Bloop was upgraded only to v1.4.0-RC1 since later versions would require more invasive changes. These will be addressed in follow-up pull requests.
1 parent 946ab23 commit 3f52ac7

File tree

13 files changed

+76
-58
lines changed

13 files changed

+76
-58
lines changed

Diff for: BLOOP

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.3.2
1+
1.4.0-RC1

Diff for: COURSIER

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# Must be the same version as Bloop uses
2-
# See bloop/project/Dependencies.scala
2+
# See https://github.com/scalacenter/bloop/blob/v$BLOOP/project/Dependencies.scala
33
1.1.0-M14-4

Diff for: README.md

+2
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ This compiles the module to `build/` and runs it.
168168
* Tiny code base
169169

170170
## Build Configuration
171+
The [TOML file format](https://github.com/toml-lang/toml) is used for all configuration files. A language extension was enabled to [allow line breaks in inline tables](https://github.com/toml-lang/toml/issues/516).
172+
171173
The default build file is named `build.toml`. You can specify a custom path with the `--build` parameter. A build file corresponds to a *project* which can contain multiple *modules*.
172174

173175
This section explains the components of build configurations and provides examples you can use in your own build files.

Diff for: build.sbt

+3-3
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ libraryDependencies ++= Seq(
5151
"com.lihaoyi" %% "fansi" % "0.2.7",
5252
"io.get-coursier" %% "coursier" % bloopCoursierVersion,
5353
"io.get-coursier" %% "coursier-cache" % bloopCoursierVersion,
54-
"tech.sparse" %% "toml-scala" % "0.2.0",
55-
"tech.sparse" %% "pine" % "0.1.4",
54+
"tech.sparse" %% "toml-scala" % "0.2.2",
55+
"tech.sparse" %% "pine" % "0.1.6",
5656
"ch.epfl.scala" %% "bloop-config" % bloopVersion,
5757
"ch.epfl.scala" % "bsp4j" % "2.0.0-M4",
5858
"ch.epfl.scala" % "directory-watcher" % "0.8.0+6-f651bd93",
@@ -69,7 +69,7 @@ libraryDependencies ++= Seq(
6969
"org.java-websocket" % "Java-WebSocket" % "1.4.0",
7070
"org.slf4j" % "slf4j-simple" % "1.7.25",
7171
"com.kohlschutter.junixsocket" % "junixsocket-core" % "2.2.0",
72-
"io.monix" %% "minitest" % "2.5.0" % "test",
72+
"io.monix" %% "minitest" % "2.7.0" % "test",
7373
scalaOrganization.value % "scala-reflect" % scalaVersion.value
7474
)
7575

Diff for: src/main/scala/seed/build/Bloop.scala

+16-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import scala.collection.JavaConverters
2323
import java.nio.file.{Files, Path}
2424

2525
import org.newsclub.net.unix.{AFUNIXSocket, AFUNIXSocketAddress}
26-
import seed.Log
26+
import seed.{Log, LogLevel}
2727
import seed.config.BuildConfig
2828
import seed.config.BuildConfig.Build
2929
import seed.generation.util.PathUtil
@@ -411,6 +411,8 @@ object Bsp {
411411
val (bspSocketPath, bspProcess) = runBspServer(
412412
projectPath,
413413
new Log(log.f, log.map, log.level, log.unicode) {
414+
var lastLogLevel: Option[LogLevel] = None
415+
414416
override def error(message: String, detail: Boolean = false): Unit = {
415417
// Remove log level ("[E] ") from message since it contains escape
416418
// codes. Furthermore, the tab character is replaced by spaces.
@@ -421,12 +423,23 @@ object Bsp {
421423
else message).replaceAllLiterally("\t", " ")
422424

423425
if (messageText.trim.nonEmpty) {
426+
// TODO The BSP server should not indicate the log level in the message
427+
val logLevel = (if (message.contains("[D]")) Some(LogLevel.Debug)
428+
else if (message.contains("[E]"))
429+
Some(LogLevel.Error)
430+
else lastLogLevel).getOrElse(LogLevel.Info)
431+
lastLogLevel = Some(logLevel)
432+
424433
// This message is printed to stderr, but it is not an error,
425434
// therefore change the log level to 'debug'
426435
if (messageText.contains("BSP server cancelled, closing socket..."))
427436
debug(messageText)
428-
else
429-
super.error(messageText, detail)
437+
else {
438+
if (logLevel == LogLevel.Debug) super.debug(messageText, detail)
439+
else if (logLevel == LogLevel.Error)
440+
super.error(messageText, detail)
441+
else super.info(messageText, detail)
442+
}
430443
}
431444
}
432445
},

Diff for: src/main/scala/seed/cli/Scaffold.scala

+21-21
Original file line numberDiff line numberDiff line change
@@ -558,16 +558,16 @@ class Scaffold(log: Log, silent: Boolean = false) {
558558
Root(List(
559559
NamedTable(
560560
List("project"),
561-
Map("scalaVersion" -> Str(jvmScalaVersion)) ++
562-
(if (organisation == Organisation.Lightbend) Map()
563-
else Map("scalaOrganisation" -> Str(organisation.packageName))) ++
564-
(if (scalaJsVersion.isEmpty) Map()
565-
else Map("scalaJsVersion" -> Str(scalaJsVersion.get))) ++
566-
(if (scalaNativeVersion.isEmpty) Map() else
567-
Map("scalaNativeVersion" -> Str(scalaNativeVersion.get))
561+
List("scalaVersion" -> Str(jvmScalaVersion)) ++
562+
(if (organisation == Organisation.Lightbend) List()
563+
else List("scalaOrganisation" -> Str(organisation.packageName))) ++
564+
(if (scalaJsVersion.isEmpty) List()
565+
else List("scalaJsVersion" -> Str(scalaJsVersion.get))) ++
566+
(if (scalaNativeVersion.isEmpty) List() else
567+
List("scalaNativeVersion" -> Str(scalaNativeVersion.get))
568568
) ++ (
569-
if (testFrameworks.isEmpty) Map()
570-
else Map(
569+
if (testFrameworks.isEmpty) List()
570+
else List(
571571
"testFrameworks" -> Arr(
572572
testFrameworks.map(tf => Str(tf.mainClass)).toList
573573
)
@@ -578,7 +578,7 @@ class Scaffold(log: Log, silent: Boolean = false) {
578578
(if (platforms.size == 1) List() else List(
579579
NamedTable(
580580
List("module", moduleName),
581-
Map(
581+
List(
582582
"root" -> Str("shared"),
583583
"sources" -> Arr(List(Str("shared/src"))),
584584
"targets" -> Arr(
@@ -591,19 +591,19 @@ class Scaffold(log: Log, silent: Boolean = false) {
591591
else List(
592592
NamedTable(
593593
List("module", moduleName, "test"),
594-
Map("sources" -> Arr(List(Str("shared/test"))))
594+
List("sources" -> Arr(List(Str("shared/test"))))
595595
)
596596
)
597597
)) ++
598598
(if (scalaJsVersion.isEmpty) List() else List(
599599
NamedTable(
600600
List("module", moduleName, "js"),
601-
Map("root" -> (if (platforms.size == 1) Str(".") else Str("js"))) ++
601+
List("root" -> (if (platforms.size == 1) Str(".") else Str("js"))) ++
602602
(if (
603603
jsScalaVersion.isDefined && !jsScalaVersion.contains(jvmScalaVersion)
604-
) Map("scalaVersion" -> Str(jsScalaVersion.get)) else Map()
604+
) List("scalaVersion" -> Str(jsScalaVersion.get)) else List()
605605
) ++
606-
Map(
606+
List(
607607
"sources" -> Arr(List(
608608
if (platforms.size == 1) Str("src") else Str("js/src")
609609
))
@@ -614,7 +614,7 @@ class Scaffold(log: Log, silent: Boolean = false) {
614614
else List(
615615
NamedTable(
616616
List("module", moduleName, "test", "js"),
617-
Map(
617+
List(
618618
"sources" -> Arr(List(
619619
if (platforms.size == 1) Str("test") else Str("js/test")
620620
))
@@ -625,7 +625,7 @@ class Scaffold(log: Log, silent: Boolean = false) {
625625
(if (!platforms.contains(JVM)) List() else List(
626626
NamedTable(
627627
List("module", moduleName, "jvm"),
628-
Map(
628+
List(
629629
"root" -> (if (platforms.size == 1) Str(".") else Str("jvm")),
630630
"sources" -> Arr(List(
631631
if (platforms.size == 1) Str("src") else Str("jvm/src")
@@ -637,7 +637,7 @@ class Scaffold(log: Log, silent: Boolean = false) {
637637
else List(
638638
NamedTable(
639639
List("module", moduleName, "test", "jvm"),
640-
Map(
640+
List(
641641
"sources" -> Arr(List(
642642
if (platforms.size == 1) Str("test") else Str("jvm/test")
643643
))
@@ -648,12 +648,12 @@ class Scaffold(log: Log, silent: Boolean = false) {
648648
(if (scalaNativeVersion.isEmpty) List() else List(
649649
NamedTable(
650650
List("module", moduleName, "native"),
651-
Map("root" -> (if (platforms.size == 1) Str(".") else Str("native"))) ++
651+
List("root" -> (if (platforms.size == 1) Str(".") else Str("native"))) ++
652652
(if (
653653
nativeScalaVersion.isDefined &&
654654
!nativeScalaVersion.contains(jvmScalaVersion)
655-
) Map("scalaVersion" -> Str(nativeScalaVersion.get)) else Map()
656-
) ++ Map(
655+
) List("scalaVersion" -> Str(nativeScalaVersion.get)) else List()
656+
) ++ List(
657657
"sources" -> Arr(List(
658658
if (platforms.size == 1) Str("src") else Str("native/src")
659659
))
@@ -664,7 +664,7 @@ class Scaffold(log: Log, silent: Boolean = false) {
664664
else List(
665665
NamedTable(
666666
List("module", moduleName, "test", "native"),
667-
Map(
667+
List(
668668
"sources" -> Arr(List(
669669
if (platforms.size == 1) Str("test") else Str("native/test")
670670
))

Diff for: src/main/scala/seed/config/SeedConfig.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ object SeedConfig {
2424
def parse(tomlPath: Path) = {
2525
def parseRaw(
2626
toml: String
27-
): Either[_root_.toml.Codec.Error, List[Value.Tbl]] =
27+
): Either[_root_.toml.Parse.Error, List[Value.Tbl]] =
2828
Toml.parse(toml) match {
29-
case Left(l) => Left(List() -> l)
29+
case Left(l) => Left(l)
3030
case Right(r) =>
3131
r.values.get("import") match {
3232
case Some(Value.Arr(values))
@@ -45,7 +45,7 @@ object SeedConfig {
4545
}
4646
}
4747

48-
def f(toml: String): Either[Codec.Error, Config] =
48+
def f(toml: String): Either[_root_.toml.Parse.Error, Config] =
4949
parseRaw(toml).right.flatMap { configurations =>
5050
val parsedAll = configurations.foldLeft(Map[String, Value]()) {
5151
case (acc, cur) =>

Diff for: src/main/scala/seed/config/util/TomlUtils.scala

+6-4
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ import seed.{Log, LogLevel}
77
import seed.cli.util.Ansi
88
import seed.model.Build.{ModuleKindJs, PlatformModule, VersionTag}
99
import seed.model.{Licence, Platform, TomlBuild}
10-
import toml.{Codec, Value}
10+
import toml.{Codec, Extension, Parse, Value}
1111

1212
import scala.util.Try
1313

1414
object TomlUtils {
15+
val Extensions: Set[Extension] = Set(Extension.MultiLineInlineTables)
16+
1517
object Codecs {
1618
implicit val logLevelCodec: Codec[LogLevel] = Codec {
1719
case (Value.Str(level), _, _) if level == "detail" =>
@@ -132,7 +134,7 @@ object TomlUtils {
132134

133135
def parseFile[T](
134136
path: Path,
135-
f: String => Either[Codec.Error, T],
137+
f: String => Either[Parse.Error, T],
136138
description: String,
137139
log: Log
138140
): Option[T] =
@@ -168,13 +170,13 @@ object TomlUtils {
168170

169171
def parseBuildToml(
170172
projectPath: Path
171-
)(content: String): Either[Codec.Error, TomlBuild] = {
173+
)(content: String): Either[Parse.Error, TomlBuild] = {
172174
import toml._
173175
import toml.Codecs._
174176
import seed.config.util.TomlUtils.Codecs._
175177

176178
implicit val pCodec = pathCodec(fixPath(projectPath, _))
177179

178-
Toml.parseAs[TomlBuild](content)
180+
Toml.parseAs[TomlBuild](content, Extensions)
179181
}
180182
}

Diff for: src/main/scala/seed/generation/Bloop.scala

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ object Bloop {
4949
val project = Config.Project(
5050
name = name,
5151
directory = projectPath.toAbsolutePath,
52+
workspaceDir = Some(projectPath.toAbsolutePath),
5253
sources = sources.map(_.toAbsolutePath),
5354
dependencies = dependencies,
5455
classpath = scalaCompiler.fold(List[Path]())(

Diff for: src/test/scala/seed/cli/ScaffoldSpec.scala

+14-4
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,27 @@ object ScaffoldSpec extends SimpleTestSuite {
1919
)
2020

2121
val project = result.nodes(0).asInstanceOf[NamedTable]
22-
assert(project.values("scalaVersion").asInstanceOf[Str].value.nonEmpty)
2322
assert(
24-
project.values("scalaNativeVersion").asInstanceOf[Str].value.nonEmpty
23+
project.values.toMap
24+
.apply("scalaVersion")
25+
.asInstanceOf[Str]
26+
.value
27+
.nonEmpty
2528
)
26-
assert(!project.values.isDefinedAt("testFrameworks"))
29+
assert(
30+
project.values.toMap
31+
.apply("scalaNativeVersion")
32+
.asInstanceOf[Str]
33+
.value
34+
.nonEmpty
35+
)
36+
assert(!project.values.toMap.isDefinedAt("testFrameworks"))
2737

2838
val module = result.nodes(1).asInstanceOf[NamedTable]
2939
assertEquals(module.ref, List("module", "example", "native"))
3040
assertEquals(
3141
module.values,
32-
Map("root" -> Str("."), "sources" -> Arr(List(Str("src"))))
42+
List("root" -> Str("."), "sources" -> Arr(List(Str("src"))))
3343
)
3444

3545
assertEquals(result.nodes.length, 2)

Diff for: src/test/scala/seed/generation/BloopIntegrationSpec.scala

-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ package seed.generation
33
import java.nio.file.{Files, Path, Paths}
44

55
import bloop.config.Config.JsConfig
6-
import bloop.config.ConfigEncoderDecoders
76
import minitest.TestSuite
8-
import org.apache.commons.io.FileUtils
97
import seed.{Log, cli}
108
import seed.Cli.{Command, PackageConfig}
119
import seed.cli.util.RTS

Diff for: src/test/scala/seed/generation/BloopSpec.scala

+5-9
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,13 @@ package seed.generation
22

33
import java.nio.file.{Files, Path}
44

5-
import bloop.config.ConfigEncoderDecoders
5+
import bloop.config.ConfigCodecs
66
import minitest.SimpleTestSuite
77
import org.apache.commons.io.FileUtils
8+
import seed.generation.util.BloopUtil
89
import seed.generation.util.BuildUtil.tempPath
910

1011
object BloopSpec extends SimpleTestSuite {
11-
def parseBloopFile(path: Path): bloop.config.Config.File = {
12-
val json = FileUtils.readFileToString(path.toFile, "UTF-8")
13-
io.circe.parser.decode(json)(ConfigEncoderDecoders.allDecoder).right.get
14-
}
15-
1612
test("Inherit javaDeps in child modules") {
1713
val projectPath = tempPath.resolve("inherit-javadeps")
1814
Files.createDirectory(projectPath)
@@ -22,19 +18,19 @@ object BloopSpec extends SimpleTestSuite {
2218

2319
assertEquals(build("example").module.jvm.get.moduleDeps, List("base"))
2420

25-
val base = parseBloopFile(bloopPath.resolve("base.json"))
21+
val base = BloopUtil.readJson(bloopPath.resolve("base.json"))
2622
assert(
2723
base.project.classpath
2824
.exists(_.toString.contains("/org/postgresql/postgresql/"))
2925
)
3026

31-
val example = parseBloopFile(bloopPath.resolve("example.json"))
27+
val example = BloopUtil.readJson(bloopPath.resolve("example.json"))
3228
assert(
3329
example.project.classpath
3430
.exists(_.toString.contains("/org/postgresql/postgresql/"))
3531
)
3632

37-
val exampleTest = parseBloopFile(bloopPath.resolve("example-test.json"))
33+
val exampleTest = BloopUtil.readJson(bloopPath.resolve("example-test.json"))
3834
assert(
3935
exampleTest.project.classpath
4036
.exists(_.toString.contains("/org/postgresql/postgresql/"))

Diff for: src/test/scala/seed/generation/util/BloopUtil.scala

+3-7
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,12 @@ package seed.generation.util
22

33
import java.nio.file.Path
44

5-
import bloop.config.ConfigEncoderDecoders
5+
import bloop.config.ConfigCodecs
66
import org.apache.commons.io.FileUtils
77

88
object BloopUtil {
99
def readJson(path: Path): bloop.config.Config.File = {
10-
val content = FileUtils.readFileToString(path.toFile, "UTF-8")
11-
12-
import io.circe.parser._
13-
decode[bloop.config.Config.File](content)(
14-
ConfigEncoderDecoders.allDecoder
15-
).right.get
10+
val bytes = FileUtils.readFileToByteArray(path.toFile)
11+
ConfigCodecs.read(bytes).right.get
1612
}
1713
}

0 commit comments

Comments
 (0)