From ca2617e99e8342bc97fae5e2073c7d8b3dd7be59 Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Thu, 30 Nov 2017 04:22:15 +0100 Subject: [PATCH 1/5] Convert lastModified/setLastModified calls to sbt.io.Milli calls (more precise) --- .../main/scala/sbt/librarymanagement/RichUpdateReport.scala | 3 ++- .../librarymanagement/ivyint/GigahorseUrlHandler.scala | 3 ++- project/Util.scala | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala index 297611b64..39c4cd8f8 100644 --- a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala +++ b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala @@ -2,6 +2,7 @@ package sbt package librarymanagement import java.io.File +import sbt.io.Milli.getModifiedTime /** * Provides extra methods for filtering the contents of an `UpdateReport` @@ -10,7 +11,7 @@ import java.io.File final class RichUpdateReport(report: UpdateReport) { private[sbt] def recomputeStamps(): UpdateReport = { val files = report.cachedDescriptor +: allFiles - val stamps = files.map(f => (f, f.lastModified)).toMap + val stamps = files.map(f => (f, getModifiedTime(f))).toMap UpdateReport(report.cachedDescriptor, report.configurations, report.stats, stamps) } diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala index a1109dc91..a2b4cb7a2 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala @@ -16,6 +16,7 @@ import org.apache.ivy.util.{ CopyProgressEvent, CopyProgressListener, Message } import org.apache.ivy.util.url.{ AbstractURLHandler, BasicURLHandler, IvyAuthenticator, URLHandler } import org.apache.ivy.util.url.URLHandler._ import sbt.io.IO +import sbt.io.Milli.setModifiedTime // Copied from Ivy's BasicURLHandler. class GigahorseUrlHandler extends AbstractURLHandler { @@ -149,7 +150,7 @@ class GigahorseUrlHandler extends AbstractURLHandler { val lastModified = lastModifiedTimestamp(response) if (lastModified > 0) { - dest.setLastModified(lastModified) + setModifiedTime(dest, lastModified) } if (l != null) { diff --git a/project/Util.scala b/project/Util.scala index 5dacc7df8..2ef855762 100644 --- a/project/Util.scala +++ b/project/Util.scala @@ -26,6 +26,8 @@ object Util { val timestamp = formatter.format(new Date) val content = versionLine(version) + "\ntimestamp=" + timestamp val f = dir / "xsbt.version.properties" + // TODO: replace lastModified() with sbt.io.Milli.getModifiedTime(), once the build + // has been upgraded to a version of sbt that includes sbt.io.Milli. if (!f.exists || f.lastModified < lastCompilationTime(analysis) || !containsVersion(f, version)) { s.log.info("Writing version information to " + f + " :\n" + content) IO.write(f, content) From 340f1684c209a213fadadbddf54cc81437179f5f Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Fri, 1 Dec 2017 14:58:27 +0100 Subject: [PATCH 2/5] Temporary workaround to FileNotFoundException in RichUpdateReport() --- .../sbt/librarymanagement/RichUpdateReport.scala | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala index 39c4cd8f8..2ceb8de95 100644 --- a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala +++ b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala @@ -2,6 +2,7 @@ package sbt package librarymanagement import java.io.File +import java.io.FileNotFoundException import sbt.io.Milli.getModifiedTime /** @@ -11,7 +12,20 @@ import sbt.io.Milli.getModifiedTime final class RichUpdateReport(report: UpdateReport) { private[sbt] def recomputeStamps(): UpdateReport = { val files = report.cachedDescriptor +: allFiles - val stamps = files.map(f => (f, getModifiedTime(f))).toMap + val stamps = files + .map( + f => + (f, + // TODO: this used to be a lastModified(), without error checking. + // On occasion, "files" contains files like "./target/ivyhome/resolution-cache/com.example/foo/0.4.0/resolved.xml.xml", + // which do not actually exist, so getModifiedTime() correctly throws an exception. For the moment, the behavior of + // lastModified() is reproduced, but the non-existent file should really not be there to begin with. so, FIXME. + try { + getModifiedTime(f) + } catch { + case _: FileNotFoundException => 0L + })) + .toMap UpdateReport(report.cachedDescriptor, report.configurations, report.stats, stamps) } From 41980634a4feb0c6e123c7e6c9b6b120fa31a428 Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Mon, 4 Dec 2017 22:06:12 +0100 Subject: [PATCH 3/5] Moved Milli._ to IO. --- .../main/scala/sbt/librarymanagement/RichUpdateReport.scala | 2 +- .../librarymanagement/ivyint/GigahorseUrlHandler.scala | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala index 2ceb8de95..518bc6979 100644 --- a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala +++ b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala @@ -3,7 +3,7 @@ package librarymanagement import java.io.File import java.io.FileNotFoundException -import sbt.io.Milli.getModifiedTime +import sbt.io.IO.getModifiedTime /** * Provides extra methods for filtering the contents of an `UpdateReport` diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala index a2b4cb7a2..32bbaf516 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala @@ -16,7 +16,6 @@ import org.apache.ivy.util.{ CopyProgressEvent, CopyProgressListener, Message } import org.apache.ivy.util.url.{ AbstractURLHandler, BasicURLHandler, IvyAuthenticator, URLHandler } import org.apache.ivy.util.url.URLHandler._ import sbt.io.IO -import sbt.io.Milli.setModifiedTime // Copied from Ivy's BasicURLHandler. class GigahorseUrlHandler extends AbstractURLHandler { @@ -150,7 +149,7 @@ class GigahorseUrlHandler extends AbstractURLHandler { val lastModified = lastModifiedTimestamp(response) if (lastModified > 0) { - setModifiedTime(dest, lastModified) + IO.setModifiedTime(dest, lastModified) } if (l != null) { From 02c2ab5203554cac62a8e34cdef421f2ccb0b199 Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Wed, 13 Dec 2017 16:00:41 +0000 Subject: [PATCH 4/5] Use IO.getModified over importing the method --- .../sbt/librarymanagement/RichUpdateReport.scala | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala index 518bc6979..189137008 100644 --- a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala +++ b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala @@ -3,7 +3,7 @@ package librarymanagement import java.io.File import java.io.FileNotFoundException -import sbt.io.IO.getModifiedTime +import sbt.io.IO /** * Provides extra methods for filtering the contents of an `UpdateReport` @@ -20,11 +20,10 @@ final class RichUpdateReport(report: UpdateReport) { // On occasion, "files" contains files like "./target/ivyhome/resolution-cache/com.example/foo/0.4.0/resolved.xml.xml", // which do not actually exist, so getModifiedTime() correctly throws an exception. For the moment, the behavior of // lastModified() is reproduced, but the non-existent file should really not be there to begin with. so, FIXME. - try { - getModifiedTime(f) - } catch { - case _: FileNotFoundException => 0L - })) + try IO.getModifiedTime(f) + catch { case _: FileNotFoundException => 0L } + ) + ) .toMap UpdateReport(report.cachedDescriptor, report.configurations, report.stats, stamps) } From 68356306ec492b375c4c573c5c00c42f119d5c4e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 15 Dec 2017 14:02:31 -0500 Subject: [PATCH 5/5] bump modules and plugins --- build.sbt | 1 + .../sbt/librarymanagement/CrossVersion.scala | 2 +- .../contraband-scala/sbt/librarymanagement/Disabled.scala | 2 +- .../main/contraband-scala/sbt/librarymanagement/Patch.scala | 2 +- .../sbt/librarymanagement/SshAuthentication.scala | 2 +- .../main/scala/sbt/librarymanagement/RichUpdateReport.scala | 3 +-- project/Dependencies.scala | 4 ++-- project/plugins.sbt | 6 ++---- 8 files changed, 10 insertions(+), 12 deletions(-) diff --git a/build.sbt b/build.sbt index d0ade0876..65b5c0ad2 100644 --- a/build.sbt +++ b/build.sbt @@ -55,6 +55,7 @@ lazy val lmRoot = (project in file(".")) }, bintrayPackage := "librarymanagement", scalafmtOnCompile := true, + scalafmtOnCompile in Sbt := false, scalafmtVersion := "1.2.0", git.baseVersion := baseVersion, version := { diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/CrossVersion.scala b/core/src/main/contraband-scala/sbt/librarymanagement/CrossVersion.scala index 321be7615..2c890a27b 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/CrossVersion.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/CrossVersion.scala @@ -11,7 +11,7 @@ abstract class CrossVersion() extends Serializable { override def equals(o: Any): Boolean = o match { - case x: CrossVersion => true + case _: CrossVersion => true case _ => false } override def hashCode: Int = { diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/Disabled.scala b/core/src/main/contraband-scala/sbt/librarymanagement/Disabled.scala index 1c03d422e..6a3ccde72 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/Disabled.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/Disabled.scala @@ -10,7 +10,7 @@ final class Disabled private () extends sbt.librarymanagement.CrossVersion() wit override def equals(o: Any): Boolean = o match { - case x: Disabled => true + case _: Disabled => true case _ => false } override def hashCode: Int = { diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/Patch.scala b/core/src/main/contraband-scala/sbt/librarymanagement/Patch.scala index ffdf666eb..65ec50436 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/Patch.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/Patch.scala @@ -13,7 +13,7 @@ final class Patch private () extends sbt.librarymanagement.CrossVersion() with S override def equals(o: Any): Boolean = o match { - case x: Patch => true + case _: Patch => true case _ => false } override def hashCode: Int = { diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/SshAuthentication.scala b/core/src/main/contraband-scala/sbt/librarymanagement/SshAuthentication.scala index af49207c4..2ad8a3f57 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/SshAuthentication.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/SshAuthentication.scala @@ -10,7 +10,7 @@ abstract class SshAuthentication() extends Serializable { override def equals(o: Any): Boolean = o match { - case x: SshAuthentication => true + case _: SshAuthentication => true case _ => false } override def hashCode: Int = { diff --git a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala index 189137008..d8e5ca795 100644 --- a/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala +++ b/core/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala @@ -21,8 +21,7 @@ final class RichUpdateReport(report: UpdateReport) { // which do not actually exist, so getModifiedTime() correctly throws an exception. For the moment, the behavior of // lastModified() is reproduced, but the non-existent file should really not be there to begin with. so, FIXME. try IO.getModifiedTime(f) - catch { case _: FileNotFoundException => 0L } - ) + catch { case _: FileNotFoundException => 0L }) ) .toMap UpdateReport(report.cachedDescriptor, report.configurations, report.stats, stamps) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 6a7a0f7b6..1a71abf72 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -6,8 +6,8 @@ object Dependencies { val scala211 = "2.11.12" val scala212 = "2.12.4" - private val ioVersion = "1.0.2" - private val utilVersion = "1.0.3" + private val ioVersion = "1.1.2" + private val utilVersion = "1.1.1" private val sbtIO = "org.scala-sbt" %% "io" % ioVersion diff --git a/project/plugins.sbt b/project/plugins.sbt index f82b39957..7a0426d32 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,6 +1,4 @@ -addSbtPlugin("org.scala-sbt" % "sbt-houserules" % "0.3.3") -addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.3.0") -addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.10") -addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.17") +addSbtPlugin("org.scala-sbt" % "sbt-houserules" % "0.3.4") +addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.3.2") scalacOptions += "-language:postfixOps"