Skip to content

Commit 8b45fe1

Browse files
Initial workarond to make evaluator client compatible with ScalaJS
1 parent 2abe135 commit 8b45fe1

File tree

15 files changed

+33
-10
lines changed

15 files changed

+33
-10
lines changed

build.sbt

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,56 @@
1+
lazy val noPublishSettings = Seq(
2+
publish := (),
3+
publishLocal := (),
4+
publishArtifact := false
5+
)
6+
17
lazy val root = (project in file("."))
28
.settings(mainClass in Universal := Some("org.scalaexercises.evaluator.EvaluatorServer"))
39
.settings(stage <<= (stage in Universal in `evaluator-server`))
4-
.aggregate(`evaluator-server`, `evaluator-shared`, `evaluator-client`)
10+
.settings(noPublishSettings: _*)
11+
.aggregate(`evaluator-server`, `evaluator-shared-jvm`, `evaluator-shared-js`, `evaluator-client-jvm`, `evaluator-client-js`)
512

6-
lazy val `evaluator-shared` = (project in file("shared"))
13+
lazy val `evaluator-shared` = (crossProject in file("shared"))
714
.enablePlugins(AutomateHeaderPlugin)
815
.settings(name := "evaluator-shared")
916

10-
lazy val `evaluator-client` = (project in file("client"))
17+
lazy val `evaluator-shared-jvm` = `evaluator-shared`.jvm
18+
lazy val `evaluator-shared-js` = `evaluator-shared`.js
19+
20+
lazy val scalaJSSettings = Seq(
21+
requiresDOM := false,
22+
scalaJSUseRhino := false,
23+
jsEnv := NodeJSEnv().value
24+
)
25+
26+
lazy val `evaluator-client` = (crossProject in file("client"))
1127
.dependsOn(`evaluator-shared`)
1228
.enablePlugins(AutomateHeaderPlugin)
1329
.settings(
1430
name := "evaluator-client",
1531
libraryDependencies <++= libraryVersions { v => Seq(
1632
"org.typelevel" %% "cats-free" % v('cats),
17-
"io.circe" %% "circe-core" % v('circe),
18-
"io.circe" %% "circe-generic" % v('circe),
19-
"io.circe" %% "circe-parser" % v('circe),
33+
"io.circe" %% "circe-core" % v('circe),
34+
"io.circe" %% "circe-generic" % v('circe),
35+
"io.circe" %% "circe-parser" % v('circe),
2036
"org.log4s" %% "log4s" % v('log4s),
2137
"org.scalaj" %% "scalaj-http" % v('scalajhttp),
2238
"org.slf4j" % "slf4j-simple" % v('slf4j),
2339
// Testing libraries
2440
"org.scalatest" %% "scalatest" % v('scalaTest) % "test"
2541
)
2642
}
27-
)
43+
)
44+
.jsSettings(scalaJSSettings: _*)
45+
46+
lazy val `evaluator-client-jvm` = `evaluator-client`.jvm
47+
lazy val `evaluator-client-js` = `evaluator-client`.js
2848

2949
lazy val `evaluator-server` = (project in file("server"))
30-
.dependsOn(`evaluator-shared`)
50+
.dependsOn(`evaluator-shared-jvm`)
3151
.enablePlugins(JavaAppPackaging)
3252
.enablePlugins(AutomateHeaderPlugin)
53+
.settings(noPublishSettings: _*)
3354
.settings(
3455
name := "evaluator-server",
3556
libraryDependencies <++= libraryVersions { v => Seq(

project/EvaluatorBuild.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ object EvaluatorBuild extends AutoPlugin {
3737

3838

3939
private[this] def baseSettings = Seq(
40-
version := "0.0.3-SNAPSHOT",
40+
version := "0.0.4-SNAPSHOT",
4141
organization := "org.scala-exercises",
4242
scalaVersion := "2.11.8",
4343
scalafmtConfig in ThisBuild := Some(file(".scalafmt")),

project/plugins.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.1")
22
addSbtPlugin("com.geirsson" % "sbt-scalafmt" % "0.2.11")
33
addSbtPlugin("de.heikoseeberger" % "sbt-header" % "1.6.0")
44
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.1")
5+
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.12")

server/src/main/scala/org/scalaexercises/evaluator/evaluation.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ class Evaluator(timeout: FiniteDuration = 20.seconds)(
5757
def resolveArtifacts(remotes: Seq[Remote],
5858
dependencies: Seq[Dependency]): Task[Resolution] = {
5959
val resolution = Resolution(dependencies.map(dependencyToModule).toSet)
60-
val repositories: Seq[Repository] = Cache.ivy2Local +: remotes.map(remoteToRepository)
60+
val repositories: Seq[Repository] = Cache.ivy2Local +: remotes.map(
61+
remoteToRepository)
6162
val fetch = Fetch.from(repositories, Cache.fetch())
6263
resolution.process.run(fetch)
6364
}

0 commit comments

Comments
 (0)