module Eternity.Potoki.Produce where import Eternity.Prelude import Potoki.Produce import qualified Potoki.Cereal.Transform as E import qualified Potoki.Transform as A import qualified Potoki.IO as B import qualified Potoki.Consume as C {-| Read events from a file. -} readFromFile :: Serialize event => FilePath -> Produce (Either IOException (Either Text event)) readFromFile path = transform (right E.decode) (fileBytes path) {-| Read events from a directory, which has been populated with 'Eternity.Potoki.Consume.writeToDir'. -} readFromDir :: Serialize event => FilePath -> Produce (Either IOException (Either Text event)) readFromDir dirPath = transform (right (A.produce readFromFile) >>^ either Left id) (directoryContents dirPath) where readFromFileTransform = A.produce readFromFile