package sbt
package inc
import java.io.{File, IOException}
import sbinary._
import Operations.{read, write}
import DefaultProtocol._
object FileBasedStore
{
def apply(file: File)(implicit analysisF: Format[Analysis], setupF: Format[CompileSetup]): AnalysisStore = new AnalysisStore {
def set(analysis: Analysis, setup: CompileSetup): Unit =
IO.gzipFileOut(file) { out =>
write[(Analysis, CompileSetup)](out, (analysis, setup) )
}
def get(): Option[(Analysis, CompileSetup)] =
try { Some(getUncaught()) } catch { case _: Exception => None }
def getUncaught(): (Analysis, CompileSetup) =
IO.gzipFileIn(file)( in => read[(Analysis, CompileSetup)](in) )
}
}