mirror of https://github.com/sbt/sbt.git
Add picklers to FileInfo
This commit is contained in:
parent
71aebc32f6
commit
c7c697bad1
|
|
@ -4,7 +4,7 @@ import Util._
|
|||
def internalPath = file("internal")
|
||||
|
||||
def commonSettings: Seq[Setting[_]] = Seq(
|
||||
scalaVersion := "2.10.5",
|
||||
scalaVersion := scala211,
|
||||
// publishArtifact in packageDoc := false,
|
||||
resolvers += Resolver.typesafeIvyRepo("releases"),
|
||||
resolvers += Resolver.sonatypeRepo("snapshots"),
|
||||
|
|
|
|||
|
|
@ -8,31 +8,61 @@ import sbinary.{ DefaultProtocol, Format }
|
|||
import DefaultProtocol._
|
||||
import scala.reflect.Manifest
|
||||
import sbt.io.Hash
|
||||
import sbt.serialization._
|
||||
|
||||
sealed trait FileInfo extends NotNull {
|
||||
val file: File
|
||||
}
|
||||
@directSubclasses(Array(classOf[FileHash], classOf[HashModifiedFileInfo]))
|
||||
sealed trait HashFileInfo extends FileInfo {
|
||||
val hash: List[Byte]
|
||||
}
|
||||
object HashFileInfo {
|
||||
implicit val pickler: Pickler[HashFileInfo] with Unpickler[HashFileInfo] = PicklerUnpickler.generate[HashFileInfo]
|
||||
}
|
||||
@directSubclasses(Array(classOf[FileModified], classOf[HashModifiedFileInfo]))
|
||||
sealed trait ModifiedFileInfo extends FileInfo {
|
||||
val lastModified: Long
|
||||
}
|
||||
object ModifiedFileInfo {
|
||||
implicit val pickler: Pickler[ModifiedFileInfo] with Unpickler[ModifiedFileInfo] = PicklerUnpickler.generate[ModifiedFileInfo]
|
||||
}
|
||||
@directSubclasses(Array(classOf[PlainFile]))
|
||||
sealed trait PlainFileInfo extends FileInfo {
|
||||
def exists: Boolean
|
||||
}
|
||||
object PlainFileInfo {
|
||||
implicit val pickler: Pickler[PlainFileInfo] with Unpickler[PlainFileInfo] = PicklerUnpickler.generate[PlainFileInfo]
|
||||
}
|
||||
@directSubclasses(Array(classOf[FileHashModified]))
|
||||
sealed trait HashModifiedFileInfo extends HashFileInfo with ModifiedFileInfo
|
||||
object HashModifiedFileInfo {
|
||||
implicit val pickler: Pickler[HashModifiedFileInfo] with Unpickler[HashModifiedFileInfo] = PicklerUnpickler.generate[HashModifiedFileInfo]
|
||||
}
|
||||
|
||||
private final case class PlainFile(file: File, exists: Boolean) extends PlainFileInfo
|
||||
private final case class FileHash(file: File, hash: List[Byte]) extends HashFileInfo
|
||||
private final case class FileModified(file: File, lastModified: Long) extends ModifiedFileInfo
|
||||
private final case class FileHashModified(file: File, hash: List[Byte], lastModified: Long) extends HashModifiedFileInfo
|
||||
private[sbt] final case class PlainFile(file: File, exists: Boolean) extends PlainFileInfo
|
||||
private[sbt] object PlainFile {
|
||||
implicit val pickler: Pickler[PlainFile] with Unpickler[PlainFile] = PicklerUnpickler.generate[PlainFile]
|
||||
}
|
||||
private[sbt] final case class FileHash(file: File, hash: List[Byte]) extends HashFileInfo
|
||||
private[sbt] object FileHash {
|
||||
implicit val pickler: Pickler[FileHash] with Unpickler[FileHash] = PicklerUnpickler.generate[FileHash]
|
||||
}
|
||||
private[sbt] final case class FileModified(file: File, lastModified: Long) extends ModifiedFileInfo
|
||||
private[sbt] object FileModified {
|
||||
implicit val pickler: Pickler[FileModified] with Unpickler[FileModified] = PicklerUnpickler.generate[FileModified]
|
||||
}
|
||||
private[sbt] final case class FileHashModified(file: File, hash: List[Byte], lastModified: Long) extends HashModifiedFileInfo
|
||||
private[sbt] object FileHashModified {
|
||||
implicit val pickler: Pickler[FileHashModified] with Unpickler[FileHashModified] = PicklerUnpickler.generate[FileHashModified]
|
||||
}
|
||||
|
||||
object FileInfo {
|
||||
implicit def existsInputCache: InputCache[PlainFileInfo] = exists.infoInputCache
|
||||
implicit def modifiedInputCache: InputCache[ModifiedFileInfo] = lastModified.infoInputCache
|
||||
implicit def hashInputCache: InputCache[HashFileInfo] = hash.infoInputCache
|
||||
implicit def fullInputCache: InputCache[HashModifiedFileInfo] = full.infoInputCache
|
||||
implicit val pickler: Pickler[FileInfo] with Unpickler[FileInfo] = PicklerUnpickler.generate[FileInfo]
|
||||
|
||||
sealed trait Style {
|
||||
type F <: FileInfo
|
||||
|
|
|
|||
Loading…
Reference in New Issue