Skip to content

Commit 3d8b251

Browse files
authored
Merge pull request #1630 from lwronski/scala-version-repo
Add repositories from build options when validating scala versions
2 parents 55210e9 + 235edd4 commit 3d8b251

File tree

17 files changed

+177
-81
lines changed

17 files changed

+177
-81
lines changed

modules/build/src/main/scala/scala/build/LocalRepo.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
package scala.build
22

3+
import coursier.core.{Repository, Version}
4+
import coursier.parse.RepositoryParser
35
import coursier.paths.Util
46

57
import java.io.{BufferedInputStream, Closeable}
68
import java.nio.channels.{FileChannel, FileLock}
79
import java.nio.charset.StandardCharsets
810
import java.nio.file.{Path, StandardOpenOption}
911

12+
import scala.build.errors.{BuildException, RepositoryFormatError}
1013
import scala.build.internal.Constants
1114
import scala.build.internal.zip.WrappedZipInputStream
12-
1315
object LocalRepo {
1416

1517
private def resourcePath = Constants.localRepoResourcePath

modules/build/src/main/scala/scala/build/ReplArtifacts.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package scala.build
22

33
import coursier.cache.FileCache
4+
import coursier.core.{Repository, Version}
45
import coursier.util.Task
56
import dependency._
67

@@ -42,25 +43,25 @@ object ReplArtifacts {
4243
dependencies: Seq[AnyDependency],
4344
extraClassPath: Seq[os.Path],
4445
extraSourceJars: Seq[os.Path],
46+
extraRepositories: Seq[Repository],
4547
logger: Logger,
4648
cache: FileCache[Task],
4749
directories: Directories,
4850
addScalapy: Option[String]
4951
): Either[BuildException, ReplArtifacts] = either {
50-
val localRepoOpt = LocalRepo.localRepo(directories.localRepoDir)
5152
val scalapyDeps =
5253
addScalapy.map(ver => dep"${Artifacts.scalaPyOrganization(ver)}::scalapy-core::$ver").toSeq
5354
val allDeps = dependencies ++ Seq(dep"com.lihaoyi:::ammonite:$ammoniteVersion") ++ scalapyDeps
5455
val replArtifacts = Artifacts.artifacts(
5556
Positioned.none(allDeps),
56-
localRepoOpt.toSeq,
57+
extraRepositories,
5758
Some(scalaParams),
5859
logger,
5960
cache.withMessage(s"Downloading Ammonite $ammoniteVersion")
6061
)
6162
val replSourceArtifacts = Artifacts.artifacts(
6263
Positioned.none(allDeps),
63-
localRepoOpt.toSeq,
64+
extraRepositories,
6465
Some(scalaParams),
6566
logger,
6667
cache.withMessage(s"Downloading Ammonite $ammoniteVersion sources"),
@@ -82,7 +83,7 @@ object ReplArtifacts {
8283
extraClassPath: Seq[os.Path],
8384
logger: Logger,
8485
cache: FileCache[Task],
85-
repositories: Seq[String],
86+
repositories: Seq[Repository],
8687
addScalapy: Option[String]
8788
): Either[BuildException, ReplArtifacts] = either {
8889
val isScala2 = scalaParams.scalaVersion.startsWith("2.")

modules/build/src/test/scala/scala/build/tests/ReplArtifactsTests.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class ReplArtifactsTests extends munit.FunSuite {
1616
Nil,
1717
Nil,
1818
Nil,
19+
Nil,
1920
Logger.nop,
2021
FileCache(),
2122
Directories.under(root),

modules/cli/src/main/scala/scala/cli/commands/ScalaCommand.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import caseapp.core.help.{Help, HelpFormat}
77
import caseapp.core.parser.Parser
88
import caseapp.core.util.Formatter
99
import caseapp.core.{Arg, Error, RemainingArgs}
10+
import coursier.core.{Repository, Version}
1011
import dependency.*
1112

1213
import scala.annotation.tailrec
@@ -180,7 +181,7 @@ abstract class ScalaCommand[T <: HasLoggingOptions](implicit myParser: Parser[T]
180181
val docArtifacts = value {
181182
Artifacts.fetch(
182183
Positioned.none(Seq(dep"org.scala-lang::scaladoc:${scalaParams.scalaVersion}")),
183-
buildOptions.finalRepositories,
184+
value(buildOptions.finalRepositories),
184185
Some(scalaParams),
185186
logger,
186187
buildOptions.finalCache,
@@ -211,7 +212,7 @@ abstract class ScalaCommand[T <: HasLoggingOptions](implicit myParser: Parser[T]
211212
Positioned.none(Seq(
212213
dep"${Constants.scalafmtOrganization}:${Constants.scalafmtName}:${Constants.defaultScalafmtVersion}"
213214
)),
214-
buildOptions.finalRepositories,
215+
value(buildOptions.finalRepositories),
215216
Some(scalaParams),
216217
logger,
217218
buildOptions.finalCache,

modules/cli/src/main/scala/scala/cli/commands/doc/Doc.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ object Doc extends ScalaCommand[DocOptions] {
138138
val res = value {
139139
Artifacts.fetch(
140140
Positioned.none(Seq(dep"org.scala-lang::scaladoc:${scalaParams.scalaVersion}")),
141-
build.options.finalRepositories,
141+
value(build.options.finalRepositories),
142142
Some(scalaParams),
143143
logger,
144144
build.options.finalCache,

modules/cli/src/main/scala/scala/cli/commands/pgp/PgpExternalCommand.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ object PgpExternalCommand {
139139
if (signingCliOptions.useJvm.getOrElse(false)) {
140140
val extraRepos =
141141
if (version.endsWith("SNAPSHOT"))
142-
Seq(Repositories.sonatype("snapshots").root)
142+
Seq(Repositories.sonatype("snapshots"))
143143
else
144144
Nil
145145

modules/cli/src/main/scala/scala/cli/commands/repl/Repl.scala

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -371,26 +371,30 @@ object Repl extends ScalaCommand[ReplOptions] {
371371
value(Left(new ReplError(retCode)))
372372
}
373373

374-
def defaultArtifacts(): Either[BuildException, ReplArtifacts] =
375-
ReplArtifacts.default(
376-
scalaParams,
377-
artifacts.userDependencies,
378-
artifacts.extraClassPath,
379-
logger,
380-
cache,
381-
options.finalRepositories,
382-
addScalapy =
383-
if (setupPython)
384-
Some(options.notForBloopOptions.scalaPyVersion.getOrElse(Constants.scalaPyVersion))
385-
else None
386-
)
374+
def defaultArtifacts(): Either[BuildException, ReplArtifacts] = either {
375+
value {
376+
ReplArtifacts.default(
377+
scalaParams,
378+
artifacts.userDependencies,
379+
artifacts.extraClassPath,
380+
logger,
381+
cache,
382+
value(options.finalRepositories),
383+
addScalapy =
384+
if (setupPython)
385+
Some(options.notForBloopOptions.scalaPyVersion.getOrElse(Constants.scalaPyVersion))
386+
else None
387+
)
388+
}
389+
}
387390
def ammoniteArtifacts(): Either[BuildException, ReplArtifacts] =
388391
ReplArtifacts.ammonite(
389392
scalaParams,
390393
options.notForBloopOptions.replOptions.ammoniteVersion,
391394
artifacts.userDependencies,
392395
artifacts.extraClassPath,
393396
artifacts.extraSourceJars,
397+
value(options.finalRepositories),
394398
logger,
395399
cache,
396400
directories,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ object ScalaJsLinker {
5353

5454
val extraRepos =
5555
if (scalaJsVersion.endsWith("SNAPSHOT") || scalaJsCliVersion.endsWith("SNAPSHOT"))
56-
Seq(Repositories.sonatype("snapshots").root)
56+
Seq(Repositories.sonatype("snapshots"))
5757
else
5858
Nil
5959

modules/cli/src/main/scala/scala/cli/launcher/LauncherCli.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ object LauncherCli {
2424
val cache = CoursierOptions().coursierCache(logger.coursierLogger(""))
2525
val scalaVersion = options.cliScalaVersion.getOrElse(scalaCliScalaVersion(version))
2626
val scalaParameters = ScalaParameters(scalaVersion)
27-
val snapshotsRepo = Seq(Repositories.central.root, Repositories.sonatype("snapshots").root)
27+
val snapshotsRepo = Seq(Repositories.central, Repositories.sonatype("snapshots"))
2828

2929
val cliVersion: String =
3030
if (version == "nightly") resolveNightlyScalaCliVersion(cache, scalaParameters) else version

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,21 @@ class RunTests212 extends RunTestDefinitions(
3131
)
3232
}
3333
}
34+
test("2.12.nightly") {
35+
TestInputs(os.rel / "sample.sc" -> "println(util.Properties.versionNumberString)").fromRoot {
36+
root =>
37+
val res =
38+
os.proc(
39+
TestUtil.cli,
40+
"run",
41+
".",
42+
"-S",
43+
"2.12.nightly",
44+
TestUtil.extraOptions
45+
)
46+
.call(cwd = root)
47+
val version = res.out.trim()
48+
expect(version.startsWith("2.12"))
49+
}
50+
}
3451
}

0 commit comments

Comments
 (0)