From 5b198b20be271e27768547ad944c362fab572c4e Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Mon, 4 Feb 2019 12:57:45 -0800 Subject: [PATCH] Add file FileInfo factory applys without io It may be the case that the file property is already known and we can avoid performing additional io by just passing in the value directly. --- util-cache/src/main/scala/sbt/util/FileInfo.scala | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 1fc605a3d..f823f4924 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -90,6 +90,8 @@ object FileInfo { implicit def apply(file: File): HashModifiedFileInfo = FileHashModified(file.getAbsoluteFile, Hash(file).toList, IO.getModifiedTimeOrZero(file)) + def apply(file: File, hash: List[Byte], lastModified: Long): HashModifiedFileInfo = + FileHashModified(file.getAbsoluteFile, hash, lastModified) } object hash extends Style { @@ -115,6 +117,8 @@ object FileInfo { } implicit def apply(file: File): HashFileInfo = FileHash(file.getAbsoluteFile, computeHash(file)) + def apply(file: File, bytes: List[Byte]): HashFileInfo = + FileHash(file.getAbsoluteFile, bytes) private def computeHash(file: File): List[Byte] = try Hash(file).toList @@ -147,6 +151,8 @@ object FileInfo { implicit def apply(file: File): ModifiedFileInfo = FileModified(file.getAbsoluteFile, IO.getModifiedTimeOrZero(file)) + def apply(file: File, lastModified: Long): ModifiedFileInfo = + FileModified(file.getAbsoluteFile, lastModified) } object exists extends Style { @@ -175,5 +181,9 @@ object FileInfo { val abs = file.getAbsoluteFile PlainFile(abs, abs.exists) } + def apply(file: File, exists: Boolean): PlainFileInfo = { + val abs = file.getAbsoluteFile + PlainFile(abs, exists) + } } }