Skip to content

Commit 235edd4

Browse files
lwronskiGedochao
andcommitted
Add repositories from build options when validating scala versions
Co-authored-by: Piotr Chabelski <ged.subfan@gmail.com>
1 parent 5ac860c commit 235edd4

File tree

15 files changed

+122
-80
lines changed

15 files changed

+122
-80
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/RunTests213.scala

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,25 @@ class RunTests213 extends RunTestDefinitions(
77
scalaVersionOpt = Some(Constants.scala213)
88
){
99
// format: on
10+
test("ensure typesafe PR validation snapshot Scala versions are supported") {
11+
TestInputs(os.rel / "sample.sc" -> "println(util.Properties.versionNumberString)").fromRoot {
12+
root =>
13+
val snapshotScalaVersion = "2.13.11-bin-89f3de5-SNAPSHOT"
14+
val res =
15+
os.proc(
16+
TestUtil.cli,
17+
"run",
18+
".",
19+
"--repository",
20+
"https://scala-ci.typesafe.com/artifactory/scala-pr-validation-snapshots",
21+
"-S",
22+
snapshotScalaVersion,
23+
TestUtil.extraOptions
24+
)
25+
.call(cwd = root)
26+
expect(res.out.trim() == "2.13.11-20221128-143922-89f3de5")
27+
}
28+
}
1029
test("2.13.nightly") {
1130
TestInputs(os.rel / "sample.sc" -> "println(util.Properties.versionNumberString)").fromRoot {
1231
root =>

0 commit comments

Comments
 (0)