From ccf149e8bf87cd2cbf70313db023ec70ba4a618e Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Thu, 30 Nov 2017 04:12:13 +0100 Subject: [PATCH 01/13] Convert lastModified() calls to sbt.io.Milli.getModifiedTime() --- .../src/main/scala/sbt/internal/scripted/FileCommands.scala | 4 +++- util-cache/src/main/scala/sbt/util/FileInfo.scala | 5 +++-- util-cache/src/test/scala/FileInfoSpec.scala | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index 3b5daaef7..8849f4987 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -9,6 +9,7 @@ import java.io.File import sbt.io.{ IO, Path } import sbt.io.syntax._ import Path._ +import sbt.io.Milli.getModifiedTime class FileCommands(baseDirectory: File) extends BasicStatementHandler { lazy val commands = commandMap @@ -67,7 +68,8 @@ class FileCommands(baseDirectory: File) extends BasicStatementHandler { def newer(a: String, b: String): Unit = { val pathA = fromString(a) val pathB = fromString(b) - val isNewer = pathA.exists && (!pathB.exists || pathA.lastModified > pathB.lastModified) + val isNewer = pathA.exists && (!pathB.exists || getModifiedTime(pathA) > getModifiedTime( + pathB)) if (!isNewer) { scriptError(s"$pathA is not newer than $pathB") } diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 6fcb3d619..90a65b40b 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -8,6 +8,7 @@ import scala.util.control.NonFatal import sbt.io.Hash import sjsonnew.{ Builder, JsonFormat, Unbuilder, deserializationError } import CacheImplicits._ +import sbt.io.Milli.getModifiedTime sealed trait FileInfo { def file: File } sealed trait HashFileInfo extends FileInfo { def hash: List[Byte] } @@ -88,7 +89,7 @@ object FileInfo { } implicit def apply(file: File): HashModifiedFileInfo = - FileHashModified(file.getAbsoluteFile, Hash(file).toList, file.lastModified) + FileHashModified(file.getAbsoluteFile, Hash(file).toList, getModifiedTime(file)) } object hash extends Style { @@ -145,7 +146,7 @@ object FileInfo { } implicit def apply(file: File): ModifiedFileInfo = - FileModified(file.getAbsoluteFile, file.lastModified) + FileModified(file.getAbsoluteFile, getModifiedTime(file)) } object exists extends Style { diff --git a/util-cache/src/test/scala/FileInfoSpec.scala b/util-cache/src/test/scala/FileInfoSpec.scala index debd427c7..a10d4b6bc 100644 --- a/util-cache/src/test/scala/FileInfoSpec.scala +++ b/util-cache/src/test/scala/FileInfoSpec.scala @@ -3,10 +3,11 @@ package sbt.util import sjsonnew.shaded.scalajson.ast.unsafe._ import sjsonnew._, support.scalajson.unsafe._ import sbt.internal.util.UnitSpec +import sbt.io.Milli.getModifiedTime class FileInfoSpec extends UnitSpec { val file = new java.io.File(".").getAbsoluteFile - val fileInfo: ModifiedFileInfo = FileModified(file, file.lastModified()) + val fileInfo: ModifiedFileInfo = FileModified(file, getModifiedTime(file)) val filesInfo = FilesInfo(Set(fileInfo)) it should "round trip" in assertRoundTrip(filesInfo) From d03dfb39817be24a84556cabfc4affc4ac257bb2 Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Mon, 4 Dec 2017 21:22:07 +0100 Subject: [PATCH 02/13] Moved Milli._ to IO. --- .../src/main/scala/sbt/internal/scripted/FileCommands.scala | 5 ++--- util-cache/src/main/scala/sbt/util/FileInfo.scala | 2 +- util-cache/src/test/scala/FileInfoSpec.scala | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index 8849f4987..95257d288 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -9,7 +9,7 @@ import java.io.File import sbt.io.{ IO, Path } import sbt.io.syntax._ import Path._ -import sbt.io.Milli.getModifiedTime +import sbt.io.IO.getModifiedTime class FileCommands(baseDirectory: File) extends BasicStatementHandler { lazy val commands = commandMap @@ -68,8 +68,7 @@ class FileCommands(baseDirectory: File) extends BasicStatementHandler { def newer(a: String, b: String): Unit = { val pathA = fromString(a) val pathB = fromString(b) - val isNewer = pathA.exists && (!pathB.exists || getModifiedTime(pathA) > getModifiedTime( - pathB)) + val isNewer = pathA.exists && (!pathB.exists || getModifiedTime(pathA) > getModifiedTime(pathB)) if (!isNewer) { scriptError(s"$pathA is not newer than $pathB") } diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 90a65b40b..218110f20 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -8,7 +8,7 @@ import scala.util.control.NonFatal import sbt.io.Hash import sjsonnew.{ Builder, JsonFormat, Unbuilder, deserializationError } import CacheImplicits._ -import sbt.io.Milli.getModifiedTime +import sbt.io.IO.getModifiedTime sealed trait FileInfo { def file: File } sealed trait HashFileInfo extends FileInfo { def hash: List[Byte] } diff --git a/util-cache/src/test/scala/FileInfoSpec.scala b/util-cache/src/test/scala/FileInfoSpec.scala index a10d4b6bc..936441fbb 100644 --- a/util-cache/src/test/scala/FileInfoSpec.scala +++ b/util-cache/src/test/scala/FileInfoSpec.scala @@ -3,7 +3,7 @@ package sbt.util import sjsonnew.shaded.scalajson.ast.unsafe._ import sjsonnew._, support.scalajson.unsafe._ import sbt.internal.util.UnitSpec -import sbt.io.Milli.getModifiedTime +import sbt.io.IO.getModifiedTime class FileInfoSpec extends UnitSpec { val file = new java.io.File(".").getAbsoluteFile From cd4346c5d7aa0c04893bc7ae85c240e1a6926c62 Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Fri, 8 Dec 2017 23:50:40 +0100 Subject: [PATCH 03/13] Allow FileInfo for non-existent files with the new timestamps FileInfo is used to wrap information like last modified time on files that may or may not exist. Arguably, that does not make much sense: the non-existent files should not lead to modification file information, hashes, and a persistent serialized version of the resulting meaningless information. However, considering that the FileInfo information is serialized and saved, it is necessary to preserve compatibility at this stage. Therefore the modification time is explicitly set to zero for those files that do not exist when each FileInfo is built. --- util-cache/src/main/scala/sbt/util/FileInfo.scala | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 218110f20..4981831f4 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -4,6 +4,7 @@ package sbt.util import java.io.File +import java.io.FileNotFoundException import scala.util.control.NonFatal import sbt.io.Hash import sjsonnew.{ Builder, JsonFormat, Unbuilder, deserializationError } @@ -50,6 +51,15 @@ object FilesInfo { } object FileInfo { + + def getModifiedTimeOrZero(file: File) = { // returns 0L if file does not exist + try { + getModifiedTime(file) + } catch { + case _: FileNotFoundException => 0L + } + } + sealed trait Style { type F <: FileInfo @@ -89,7 +99,7 @@ object FileInfo { } implicit def apply(file: File): HashModifiedFileInfo = - FileHashModified(file.getAbsoluteFile, Hash(file).toList, getModifiedTime(file)) + FileHashModified(file.getAbsoluteFile, Hash(file).toList, getModifiedTimeOrZero(file)) } object hash extends Style { @@ -146,7 +156,7 @@ object FileInfo { } implicit def apply(file: File): ModifiedFileInfo = - FileModified(file.getAbsoluteFile, getModifiedTime(file)) + FileModified(file.getAbsoluteFile, getModifiedTimeOrZero(file)) } object exists extends Style { From 13a8d5336944ac12ed5dc39232effeedaea32ab7 Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Wed, 13 Dec 2017 15:47:15 +0000 Subject: [PATCH 04/13] Use IO.getModified over importing the method .. and make getModifiedTimeOrZero private. --- .../scala/sbt/internal/scripted/FileCommands.scala | 3 ++- util-cache/src/main/scala/sbt/util/FileInfo.scala | 14 +++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index 95257d288..549352ca1 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -68,7 +68,8 @@ class FileCommands(baseDirectory: File) extends BasicStatementHandler { def newer(a: String, b: String): Unit = { val pathA = fromString(a) val pathB = fromString(b) - val isNewer = pathA.exists && (!pathB.exists || getModifiedTime(pathA) > getModifiedTime(pathB)) + val isNewer = pathA.exists && + (!pathB.exists || IO.getModifiedTime(pathA) > IO.getModifiedTime(pathB)) if (!isNewer) { scriptError(s"$pathA is not newer than $pathB") } diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 4981831f4..2a26e193d 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -6,10 +6,9 @@ package sbt.util import java.io.File import java.io.FileNotFoundException import scala.util.control.NonFatal -import sbt.io.Hash +import sbt.io.{ Hash, IO } import sjsonnew.{ Builder, JsonFormat, Unbuilder, deserializationError } import CacheImplicits._ -import sbt.io.IO.getModifiedTime sealed trait FileInfo { def file: File } sealed trait HashFileInfo extends FileInfo { def hash: List[Byte] } @@ -52,13 +51,10 @@ object FilesInfo { object FileInfo { - def getModifiedTimeOrZero(file: File) = { // returns 0L if file does not exist - try { - getModifiedTime(file) - } catch { - case _: FileNotFoundException => 0L - } - } + // returns 0L if file does not exist + private def getModifiedTimeOrZero(file: File) = + try IO.getModifiedTime(file) + catch { case _: FileNotFoundException => 0L } sealed trait Style { type F <: FileInfo From d2338ff28760232e827e7f8cbca07af44c01ccf2 Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Fri, 15 Dec 2017 17:23:39 +0100 Subject: [PATCH 05/13] Removed a couple more direct imports of getModifiedTime() --- .../src/main/scala/sbt/internal/scripted/FileCommands.scala | 2 +- util-cache/src/test/scala/FileInfoSpec.scala | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index 549352ca1..3a1dcc1fe 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -9,7 +9,7 @@ import java.io.File import sbt.io.{ IO, Path } import sbt.io.syntax._ import Path._ -import sbt.io.IO.getModifiedTime +import sbt.io.IO class FileCommands(baseDirectory: File) extends BasicStatementHandler { lazy val commands = commandMap diff --git a/util-cache/src/test/scala/FileInfoSpec.scala b/util-cache/src/test/scala/FileInfoSpec.scala index 936441fbb..62e941254 100644 --- a/util-cache/src/test/scala/FileInfoSpec.scala +++ b/util-cache/src/test/scala/FileInfoSpec.scala @@ -3,11 +3,11 @@ package sbt.util import sjsonnew.shaded.scalajson.ast.unsafe._ import sjsonnew._, support.scalajson.unsafe._ import sbt.internal.util.UnitSpec -import sbt.io.IO.getModifiedTime +import sbt.io.IO class FileInfoSpec extends UnitSpec { val file = new java.io.File(".").getAbsoluteFile - val fileInfo: ModifiedFileInfo = FileModified(file, getModifiedTime(file)) + val fileInfo: ModifiedFileInfo = FileModified(file, IO.getModifiedTime(file)) val filesInfo = FilesInfo(Set(fileInfo)) it should "round trip" in assertRoundTrip(filesInfo) From 3d9eab1bf8866010b8643261e7f2df3bab1102ab Mon Sep 17 00:00:00 2001 From: eugene yokota Date: Fri, 15 Dec 2017 12:51:29 -0500 Subject: [PATCH 06/13] IO 1.1.2 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 439ff5650..453f20649 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -7,7 +7,7 @@ object Dependencies { val scala211 = "2.11.12" val scala212 = "2.12.4" - private val ioVersion = "1.1.1" + private val ioVersion = "1.1.2" private val sbtIO = "org.scala-sbt" %% "io" % ioVersion From e835ce068959779984c80517d4b145947a361ccb Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 15 Dec 2017 13:15:34 -0500 Subject: [PATCH 07/13] bump plugins --- .../src/main/scala/sbt/internal/scripted/FileCommands.scala | 2 +- project/plugins.sbt | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index 3a1dcc1fe..331d34e93 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -69,7 +69,7 @@ class FileCommands(baseDirectory: File) extends BasicStatementHandler { val pathA = fromString(a) val pathB = fromString(b) val isNewer = pathA.exists && - (!pathB.exists || IO.getModifiedTime(pathA) > IO.getModifiedTime(pathB)) + (!pathB.exists || IO.getModifiedTime(pathA) > IO.getModifiedTime(pathB)) if (!isNewer) { scriptError(s"$pathA is not newer than $pathB") } diff --git a/project/plugins.sbt b/project/plugins.sbt index 81ebe9957..a36d654a3 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,2 @@ -addSbtPlugin("org.scala-sbt" % "sbt-houserules" % "0.3.3") -addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.3.0") -addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.17") -addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.14") +addSbtPlugin("org.scala-sbt" % "sbt-houserules" % "0.3.4") +addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.3.2") From 2ee0a1e19aee1875b956b39acef3af13fda2a28f Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Mon, 18 Dec 2017 16:01:01 +0000 Subject: [PATCH 08/13] Add 1.1.1 to mimaPreviousArtifacts, & backfill --- build.sbt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index 41a967b3a..c421a25c0 100644 --- a/build.sbt +++ b/build.sbt @@ -32,9 +32,12 @@ def commonSettings: Seq[Setting[_]] = Seq( val mimaSettings = Def settings ( mimaPreviousArtifacts := Set( - organization.value % moduleName.value % "1.0.0" + "1.0.0", "1.0.1", "1.0.2", "1.0.3", + "1.1.0", "1.1.1", + ) map (version => + organization.value %% moduleName.value % version cross (if (crossPaths.value) CrossVersion.binary else CrossVersion.disabled) - ) + ), ) lazy val utilRoot: Project = (project in file(".")) From 28bcc6c602aee31a1208a16bbba9ab7a04a9fbb6 Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Tue, 19 Dec 2017 13:22:48 +0000 Subject: [PATCH 09/13] Upgrade to sbt-houserules 0.3.5 --- build.sbt | 2 -- project/plugins.sbt | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/build.sbt b/build.sbt index c421a25c0..412d7b65f 100644 --- a/build.sbt +++ b/build.sbt @@ -65,9 +65,7 @@ lazy val utilRoot: Project = (project in file(".")) homepage := Some(url("https://github.com/sbt/util")), description := "Util module for sbt", scmInfo := Some(ScmInfo(url("https://github.com/sbt/util"), "git@github.com:sbt/util.git")), - scalafmtOnCompile := true, scalafmtOnCompile in Sbt := false, - scalafmtVersion := "1.2.0", )), commonSettings, name := "Util Root", diff --git a/project/plugins.sbt b/project/plugins.sbt index a36d654a3..b85b1f525 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,2 +1,2 @@ -addSbtPlugin("org.scala-sbt" % "sbt-houserules" % "0.3.4") +addSbtPlugin("org.scala-sbt" % "sbt-houserules" % "0.3.5") addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.3.2") From 8ba68eedfd9433c9cc5e5e36fc6db81e95352d2a Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Mon, 18 Dec 2017 17:15:15 +0100 Subject: [PATCH 10/13] Revert *ModifiedTime() calls to *lastModified*() calls There are just too many instances in which sbt's code relies on the `lastModified`/`setLastModified` semantics, so instead of moving to `get`/`setModifiedTime`, we use new IO calls that offer the new timestamp precision, but retain the old semantics. --- .../main/scala/sbt/internal/scripted/FileCommands.scala | 2 +- util-cache/src/main/scala/sbt/util/FileInfo.scala | 9 ++------- util-cache/src/test/scala/FileInfoSpec.scala | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index 331d34e93..b038ceb67 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -69,7 +69,7 @@ class FileCommands(baseDirectory: File) extends BasicStatementHandler { val pathA = fromString(a) val pathB = fromString(b) val isNewer = pathA.exists && - (!pathB.exists || IO.getModifiedTime(pathA) > IO.getModifiedTime(pathB)) + (!pathB.exists || IO.lastModified(pathA) > IO.lastModified(pathB)) if (!isNewer) { scriptError(s"$pathA is not newer than $pathB") } diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 2a26e193d..1dc3cb186 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -51,11 +51,6 @@ object FilesInfo { object FileInfo { - // returns 0L if file does not exist - private def getModifiedTimeOrZero(file: File) = - try IO.getModifiedTime(file) - catch { case _: FileNotFoundException => 0L } - sealed trait Style { type F <: FileInfo @@ -95,7 +90,7 @@ object FileInfo { } implicit def apply(file: File): HashModifiedFileInfo = - FileHashModified(file.getAbsoluteFile, Hash(file).toList, getModifiedTimeOrZero(file)) + FileHashModified(file.getAbsoluteFile, Hash(file).toList, IO.lastModified(file)) } object hash extends Style { @@ -152,7 +147,7 @@ object FileInfo { } implicit def apply(file: File): ModifiedFileInfo = - FileModified(file.getAbsoluteFile, getModifiedTimeOrZero(file)) + FileModified(file.getAbsoluteFile, IO.lastModified(file)) } object exists extends Style { diff --git a/util-cache/src/test/scala/FileInfoSpec.scala b/util-cache/src/test/scala/FileInfoSpec.scala index 62e941254..ea60ead82 100644 --- a/util-cache/src/test/scala/FileInfoSpec.scala +++ b/util-cache/src/test/scala/FileInfoSpec.scala @@ -7,7 +7,7 @@ import sbt.io.IO class FileInfoSpec extends UnitSpec { val file = new java.io.File(".").getAbsoluteFile - val fileInfo: ModifiedFileInfo = FileModified(file, IO.getModifiedTime(file)) + val fileInfo: ModifiedFileInfo = FileModified(file, IO.lastModified(file)) val filesInfo = FilesInfo(Set(fileInfo)) it should "round trip" in assertRoundTrip(filesInfo) From 0a1bd5a3b25f95d25a5fef18844cb0acf61a425b Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Fri, 22 Dec 2017 00:03:11 +0100 Subject: [PATCH 11/13] Change modifiedTime definitions --- .../src/main/scala/sbt/internal/scripted/FileCommands.scala | 2 +- util-cache/src/main/scala/sbt/util/FileInfo.scala | 4 ++-- util-cache/src/test/scala/FileInfoSpec.scala | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala index b038ceb67..6aefa4a7a 100644 --- a/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala +++ b/internal/util-scripted/src/main/scala/sbt/internal/scripted/FileCommands.scala @@ -69,7 +69,7 @@ class FileCommands(baseDirectory: File) extends BasicStatementHandler { val pathA = fromString(a) val pathB = fromString(b) val isNewer = pathA.exists && - (!pathB.exists || IO.lastModified(pathA) > IO.lastModified(pathB)) + (!pathB.exists || IO.getModifiedTimeOrZero(pathA) > IO.getModifiedTimeOrZero(pathB)) if (!isNewer) { scriptError(s"$pathA is not newer than $pathB") } diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 1dc3cb186..bef3d6bfd 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -90,7 +90,7 @@ object FileInfo { } implicit def apply(file: File): HashModifiedFileInfo = - FileHashModified(file.getAbsoluteFile, Hash(file).toList, IO.lastModified(file)) + FileHashModified(file.getAbsoluteFile, Hash(file).toList, IO.getModifiedTimeOrZero(file)) } object hash extends Style { @@ -147,7 +147,7 @@ object FileInfo { } implicit def apply(file: File): ModifiedFileInfo = - FileModified(file.getAbsoluteFile, IO.lastModified(file)) + FileModified(file.getAbsoluteFile, IO.getModifiedTimeOrZero(file)) } object exists extends Style { diff --git a/util-cache/src/test/scala/FileInfoSpec.scala b/util-cache/src/test/scala/FileInfoSpec.scala index ea60ead82..7b0f3e035 100644 --- a/util-cache/src/test/scala/FileInfoSpec.scala +++ b/util-cache/src/test/scala/FileInfoSpec.scala @@ -7,7 +7,7 @@ import sbt.io.IO class FileInfoSpec extends UnitSpec { val file = new java.io.File(".").getAbsoluteFile - val fileInfo: ModifiedFileInfo = FileModified(file, IO.lastModified(file)) + val fileInfo: ModifiedFileInfo = FileModified(file, IO.getModifiedTimeOrZero(file)) val filesInfo = FilesInfo(Set(fileInfo)) it should "round trip" in assertRoundTrip(filesInfo) From 2765e07add355a1d63eb63c15da4b74fa126146c Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Thu, 21 Dec 2017 22:43:38 -0500 Subject: [PATCH 12/13] sbt 1.0.4 --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index 94005e587..394cb75cf 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.0.0 +sbt.version=1.0.4 From de54721fc3c3beca8aa097d7ce3e0c78c8366077 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Thu, 21 Dec 2017 22:43:53 -0500 Subject: [PATCH 13/13] IO 1.1.3 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 453f20649..97e4f992b 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -7,7 +7,7 @@ object Dependencies { val scala211 = "2.11.12" val scala212 = "2.12.4" - private val ioVersion = "1.1.2" + private val ioVersion = "1.1.3" private val sbtIO = "org.scala-sbt" %% "io" % ioVersion