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