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.
This commit is contained in:
Ethan Atkins 2019-02-04 12:57:45 -08:00
parent 2e0d2d920a
commit 5b198b20be
1 changed files with 10 additions and 0 deletions

View File

@ -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)
}
}
}