Skip to content

Commit dd17c7e

Browse files
authored
Merge pull request #1912 from lwronski/scalajs-cli
Add support for Scala.js 1.13.0 and allow to use newer Scala.js version in older scala-cli
2 parents e1d3042 + 429d355 commit dd17c7e

File tree

13 files changed

+53
-64
lines changed

13 files changed

+53
-64
lines changed

build.sc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,6 @@ trait Core extends ScalaCliSbtModule with ScalaCliPublishModule with HasTests
369369
| def scalajsEnvJsdomNodejsVersion = "${Deps.scalaJsEnvJsdomNodejs.dep.version}"
370370
| def scalaNativeVersion = "${Deps.nativeTools.dep.version}"
371371
|
372-
| def scalaJsCliVersion = "${InternalDeps.Versions.scalaJsCli}"
373-
|
374372
| def testRunnerOrganization = "$testRunnerOrganization"
375373
| def testRunnerModuleName = "${`test-runner`(Scala.runnerScala3).artifactName()}"
376374
| def testRunnerVersion = "${`test-runner`(Scala.runnerScala3).publishVersion()}"
@@ -709,7 +707,6 @@ trait Cli extends SbtModule with ProtoBuildModule with CliLaunchers
709707
|object Constants {
710708
| def defaultScalaVersion = "${Scala.defaultUser}"
711709
| def scalaJsVersion = "${Scala.scalaJs}"
712-
| def scalaJsCliVersion = "${InternalDeps.Versions.scalaJsCli}"
713710
| def scalaNativeVersion = "${Deps.nativeTools.dep.version}"
714711
| def ammoniteVersion = "${Deps.ammonite.dep.version}"
715712
| def defaultScalafmtVersion = "${Deps.scalafmtCli.dep.version}"

modules/cli/src/main/scala/scala/cli/commands/shared/ScalaJsOptions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ final case class ScalaJsOptions(
8080
@Hidden
8181
jsLinkerPath: Option[String] = None,
8282
@Group(HelpGroup.ScalaJs.toString)
83-
@HelpMessage(s"Scala.js CLI version to use for linking (${Constants.scalaJsCliVersion} by default).")
83+
@HelpMessage(s"Scala.js CLI version to use for linking (${Constants.scalaJsVersion} by default).")
8484
@ValueDescription("version")
8585
@Tag(tags.implementation)
8686
@Hidden

modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ final case class SharedOptions(
232232
linkerPath = jsLinkerPath
233233
.filter(_.trim.nonEmpty)
234234
.map(os.Path(_, Os.pwd)),
235+
scalaJsVersion = jsVersion.map(_.trim).filter(_.nonEmpty),
235236
scalaJsCliVersion = jsCliVersion.map(_.trim).filter(_.nonEmpty),
236237
javaArgs = jsCliJavaArg,
237238
useJvm = jsCliOnJvm.map {

modules/cli/src/main/scala/scala/cli/internal/ScalaJsLinker.scala

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,8 @@ object ScalaJsLinker {
3636
case None =>
3737
val scalaJsCliVersion = options.finalScalaJsCliVersion
3838
val scalaJsCliDep = {
39-
val mod =
40-
if (scalaJsCliVersion.contains("-sc"))
41-
if (Version(scalaJsCliVersion) < Version("1.1.2-sc1"))
42-
mod"io.github.alexarchambault.tmp:scalajs-cli_2.13"
43-
else
44-
mod"io.github.alexarchambault.tmp:scalajscli-${scalaJsVersion}_2.13"
45-
else
46-
mod"org.scala-js:scalajs-cli_2.13"
47-
dependency.Dependency(mod, scalaJsCliVersion)
39+
val mod = mod"org.virtuslab.scala-cli:scalajscli_2.13"
40+
dependency.Dependency(mod, s"$scalaJsCliVersion+")
4841
}
4942

5043
val forcedVersions = Seq(
@@ -82,11 +75,11 @@ object ScalaJsLinker {
8275
command.flatMap(_.value)
8376

8477
case Left(osArch) =>
85-
val useLatest = scalaJsCliVersion == "latest"
78+
val useLatest = scalaJsVersion == "latest"
8679
val ext = if (Properties.isWin) ".zip" else ".gz"
8780
val tag = if (useLatest) "launchers" else s"v$scalaJsCliVersion"
8881
val url =
89-
s"https://github.com/scala-cli/scala-js-cli-native-image/releases/download/$tag/scala-js-ld-$scalaJsVersion-$osArch$ext"
82+
s"https://github.com/virtusLab/scala-js-cli/releases/download/$tag/scala-js-ld-$osArch$ext"
9083
val params = ExternalBinaryParams(
9184
url,
9285
useLatest,

modules/integration/src/test/scala/scala/cli/integration/ExportJsonTestDefinitions.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,10 @@ abstract class ExportJsonTestDefinitions(val scalaVersionOpt: Option[String])
193193
val fileContents = readJson(root / "dest" / "export.json")
194194

195195
expect(fileContents ==
196-
"""{
196+
s"""{
197197
|"scalaVersion": "3.1.3",
198198
|"platform": "JS",
199-
|"scalaJsVersion": "1.12.0",
199+
|"scalaJsVersion": "${Constants.scalaJsVersion}",
200200
|"jsEsVersion":"es2015",
201201
|"scopes": {
202202
| "main": {

modules/options/src/main/scala/scala/build/Artifacts.scala

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -169,18 +169,13 @@ object Artifacts {
169169
fetched.fullDetailedArtifacts.collect { case (_, _, _, Some(f)) => os.Path(f, Os.pwd) }
170170

171171
val scalaJsCliDependency =
172-
scalaArtifactsParams.scalaJsCliVersion.map { version =>
173-
val scalaJsVersion =
174-
scalaArtifactsParams.scalaJsVersion.getOrElse(Constants.scalaJsVersion)
175-
val mod =
176-
if (version.contains("-sc"))
177-
Module(
178-
Organization("io.github.alexarchambault.tmp"),
179-
ModuleName(s"scalajscli-${scalaJsVersion}_2.13"),
180-
Map.empty
181-
)
182-
else cmod"org.scala-js:scalajs-cli_2.13"
183-
Seq(coursier.Dependency(mod, version))
172+
scalaArtifactsParams.scalaJsCliVersion.map { scalaJsCliVersion =>
173+
val mod = Module(
174+
Organization("org.virtuslab.scala-cli"),
175+
ModuleName(s"scalajscli_2.13"),
176+
Map.empty
177+
)
178+
Seq(coursier.Dependency(mod, s"$scalaJsCliVersion+"))
184179
}
185180

186181
val fetchedScalaJsCli = scalaJsCliDependency match {

modules/options/src/main/scala/scala/build/options/BuildOptions.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,9 @@ final case class BuildOptions(
344344
scalaJsVersion =
345345
if (platform.value == Platform.JS) Some(scalaJsOptions.finalVersion) else None,
346346
scalaJsCliVersion =
347-
if (platform.value == Platform.JS) Some(Constants.scalaJsCliVersion) else None,
347+
if (platform.value == Platform.JS)
348+
Some(notForBloopOptions.scalaJsLinkerOptions.finalScalaJsCliVersion)
349+
else None,
348350
scalaNativeCliVersion =
349351
if (platform.value == Platform.Native) Some(scalaNativeOptions.finalVersion) else None,
350352
addScalapy =

modules/options/src/main/scala/scala/build/options/scalajs/ScalaJsLinkerOptions.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ final case class ScalaJsLinkerOptions(
77
javaArgs: Seq[String] = Nil,
88
/** If right, use JVM, if left, use the value as architecture */
99
useJvm: Option[Either[String, Unit]] = None,
10+
scalaJsVersion: Option[String] = None,
1011
scalaJsCliVersion: Option[String] = None,
1112
linkerPath: Option[os.Path] = None
1213
) {
13-
def finalScalaJsCliVersion = scalaJsCliVersion.getOrElse {
14-
Constants.scalaJsCliVersion
14+
def finalScalaJsCliVersion = scalaJsCliVersion.orElse(scalaJsVersion).getOrElse {
15+
Constants.scalaJsVersion
1516
}
1617

1718
/** If right, use JVM, if left, use the value as architecture */

project/deps.sc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ object Scala {
1414
val mainVersions = Seq(scala3, scala213)
1515
val runnerScalaVersions = runnerScala3 +: allScala2
1616

17-
def scalaJs = "1.12.0"
17+
def scalaJs = "1.13.0"
1818

1919
def listAll: Seq[String] = {
2020
def patchVer(sv: String): Int =
@@ -74,7 +74,6 @@ object InternalDeps {
7474
object Versions {
7575
def mill = os.read(os.pwd / ".mill-version").trim
7676
def lefouMillwRef = "166bcdf5741de8569e0630e18c3b2ef7e252cd96"
77-
def scalaJsCli = "1.1.3-sc1"
7877
}
7978
}
8079

website/docs/guides/scala-js.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,12 @@ In the future, the Scala CLI will be able to support any version of Scala.js ind
179179

180180
The table below lists the last supported version of Scala.js in Scala CLI. If you want to use newer Scala.js, update scala-cli.
181181

182-
| Scala CLI versions | Scala.js |
183-
|----------------------|:------------------:|
184-
| 0.0.9 | 1.7.1 |
185-
| 0.1.0 - 0.1.2 | 1.8.0 |
186-
| 0.1.3 | 1.9.0 |
187-
| 0.1.4 - 0.1.8 | 1.10.0 |
188-
| 0.1.9 - 0.1.17 | 1.10.1 |
189-
| 0.1.18 - current | 1.12.0 |
182+
| Scala CLI versions | Scala.js |
183+
|--------------------|:--------:|
184+
| 0.0.9 | 1.7.1 |
185+
| 0.1.0 - 0.1.2 | 1.8.0 |
186+
| 0.1.3 | 1.9.0 |
187+
| 0.1.4 - 0.1.8 | 1.10.0 |
188+
| 0.1.9 - 0.1.17 | 1.10.1 |
189+
| 0.1.18 - 0.2.0 | 1.12.0 |
190+
| 0.2.1 - current | 1.13.0 |

0 commit comments

Comments
 (0)