From e8df1d96f1af00bdd829aeeab9a07830fa764fba Mon Sep 17 00:00:00 2001 From: Mikhail Chugunkov Date: Sun, 30 Jun 2019 21:15:52 +0300 Subject: [PATCH 1/2] Deprecated coursier-small library replaced with coursier itself --- build.sbt | 7 +- project/Dependencies.scala | 2 +- readme.md | 2 +- .../dynamic/ScalafmtDynamicDownloader.scala | 77 +++++++++++-------- .../src/test/scala/tests/DynamicSuite.scala | 1 + 5 files changed, 51 insertions(+), 38 deletions(-) diff --git a/build.sbt b/build.sbt index cda1bd6972..4330d7976c 100644 --- a/build.sbt +++ b/build.sbt @@ -56,7 +56,8 @@ lazy val dynamic = project buildInfoPackage := "org.scalafmt.dynamic", buildInfoObject := "BuildInfo", libraryDependencies ++= List( - "com.geirsson" %% "coursier-small" % "1.3.1", + "io.get-coursier" %% "coursier" % coursier, + "io.get-coursier" %% "coursier-cache" % coursier, "com.typesafe" % "config" % "1.3.3", scalatest.value % Test, scalametaTestkit % Test @@ -126,9 +127,7 @@ lazy val cli = project libraryDependencies ++= Seq( "com.googlecode.java-diff-utils" % "diffutils" % "1.3.0", "com.martiansoftware" % "nailgun-server" % "0.9.1", - "com.github.scopt" %% "scopt" % "3.5.0", - // undeclared transitive dependency of coursier-small - "org.scala-lang.modules" %% "scala-xml" % "1.1.1" + "com.github.scopt" %% "scopt" % "3.5.0" ), scalacOptions ++= { CrossVersion.partialVersion(scalaVersion.value) match { diff --git a/project/Dependencies.scala b/project/Dependencies.scala index bbdbe01e82..287ba054a0 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -9,7 +9,7 @@ object Dependencies { val scalametaV = "4.2.0" val scalatestV = "3.2.0-SNAP10" val scalacheckV = "1.13.5" - val coursier = "1.0.3" + val coursier = "2.0.0-RC2-5" val scalapb = Def.setting { ExclusionRule( diff --git a/readme.md b/readme.md index e8c0e9ea88..07fac16f0b 100644 --- a/readme.md +++ b/readme.md @@ -11,7 +11,7 @@ Head over to [the user docs][docs] for instructions on how to install scalafmt. - `sbt compile` on a clean machine will fail to compile the `scalafmt-intellij` project. - if you plan to develop the intellij plugin, run `downloadIdea` first to fetch the IntelliJ SDK (~600mb). - - or, run `sbt test` or `sbt core/compile` (specific project). + - or, run `sbt test` or `sbt coreJVM/compile` (specific project). - Run all unit tests: `sbt test` - Run only formatting tests: `tests/testOnly *FormatTests`. - Write new formatting test: read [this doc](scalafmt-tests/src/test/resources/readme.md). diff --git a/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtDynamicDownloader.scala b/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtDynamicDownloader.scala index 6c31ab9bf9..4df4bfa1cd 100644 --- a/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtDynamicDownloader.scala +++ b/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtDynamicDownloader.scala @@ -1,14 +1,17 @@ package org.scalafmt.dynamic -import java.io.PrintWriter +import java.io.{File, PrintWriter} import java.net.URL -import java.nio.file.Path -import com.geirsson.coursiersmall._ import org.scalafmt.dynamic.ScalafmtDynamicDownloader._ +import coursier._ +import coursier.error.ResolutionError +import coursier.cache.FileCache +import coursier.cache.loggers.RefreshLogger + import scala.concurrent.duration.Duration -import scala.util.Try +import scala.util.control.NonFatal class ScalafmtDynamicDownloader( downloadProgressWriter: PrintWriter, @@ -16,32 +19,42 @@ class ScalafmtDynamicDownloader( ) { def download(version: String): Either[DownloadFailure, DownloadSuccess] = { - Try { - val settings = new Settings() - .withDependencies(dependencies(version)) - .withTtl(ttl.orElse(Some(Duration.Inf))) - .withWriter(downloadProgressWriter) - .withRepositories(repositories) - val jars: Seq[Path] = CoursierSmall.fetch(settings) - val urls = jars.map(_.toUri.toURL).toArray - DownloadSuccess(version, urls) - }.toEither.left.map { - case e: ResolutionException => - DownloadResolutionError(version, e) - case e => - DownloadUnknownError(version, e) + try { + val jars: Seq[File] = Fetch() + .addDependencies(dependencies(version): _*) + .addRepositories(repositories: _*) + .withResolveCache( + FileCache().noCredentials + .withTtl(ttl.orElse(Some(Duration.Inf))) + .withLogger( + new RefreshLogger( + downloadProgressWriter, + RefreshLogger.defaultDisplay(), + fallbackMode = true + ) + ) + ) + .run() + val urls = jars.map(_.toPath.toUri.toURL).toArray + Right(DownloadSuccess(version, urls)) + } catch { + case e: ResolutionError => + Left(DownloadResolutionError(version, e)) + case e if NonFatal(e) => + Left(DownloadUnknownError(version, e)) } } private def dependencies(version: String): List[Dependency] = List( - new Dependency( - organization(version), - s"scalafmt-cli_${scalaBinaryVersion(version)}", + Dependency.of( + Module( + organization(version), + ModuleName(s"scalafmt-cli_${scalaBinaryVersion(version)}") + ), version ), - new Dependency( - "org.scala-lang", - "scala-reflect", + Dependency.of( + Module(org"org.scala-lang", name"scala-reflect"), scalaVersion(version) ) ) @@ -57,18 +70,18 @@ class ScalafmtDynamicDownloader( else BuildInfo.scala @inline - private def organization(version: String): String = + private def organization(version: String): Organization = if (version.startsWith("1") || version.startsWith("0") || version == "2.0.0-RC1") { - "com.geirsson" + org"com.geirsson" } else { - "org.scalameta" + org"org.scalameta" } private def repositories: List[Repository] = List( - Repository.MavenCentral, - Repository.Ivy2Local, - Repository.SonatypeReleases, - Repository.SonatypeSnapshots + Repositories.central, + LocalRepositories.ivy2Local, + Repositories.sonatype("releases"), + Repositories.sonatype("snapshots") ) } @@ -83,7 +96,7 @@ object ScalafmtDynamicDownloader { } case class DownloadResolutionError( version: String, - cause: ResolutionException + cause: ResolutionError ) extends DownloadFailure case class DownloadUnknownError(version: String, cause: Throwable) extends DownloadFailure diff --git a/scalafmt-dynamic/src/test/scala/tests/DynamicSuite.scala b/scalafmt-dynamic/src/test/scala/tests/DynamicSuite.scala index 5965d9aa29..81ab75c03c 100644 --- a/scalafmt-dynamic/src/test/scala/tests/DynamicSuite.scala +++ b/scalafmt-dynamic/src/test/scala/tests/DynamicSuite.scala @@ -165,6 +165,7 @@ class DynamicSuite extends FunSuite with DiffAssertions { } private val testedVersions = Seq( + "2.0.0", "2.0.0-RC4", "1.6.0-RC4", "1.5.1", From 706b578eb657ffa00fc38ac781f36f1ad42ff1d3 Mon Sep 17 00:00:00 2001 From: Mikhail Chugunkov Date: Tue, 2 Jul 2019 23:23:43 +0300 Subject: [PATCH 2/2] Removed coursier-cache dependency --- build.sbt | 1 - 1 file changed, 1 deletion(-) diff --git a/build.sbt b/build.sbt index 4330d7976c..ebb56481da 100644 --- a/build.sbt +++ b/build.sbt @@ -57,7 +57,6 @@ lazy val dynamic = project buildInfoObject := "BuildInfo", libraryDependencies ++= List( "io.get-coursier" %% "coursier" % coursier, - "io.get-coursier" %% "coursier-cache" % coursier, "com.typesafe" % "config" % "1.3.3", scalatest.value % Test, scalametaTestkit % Test