bdcs-0.1.0: src/BDCS/Export/Tar.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
-- |
-- Module: BDCS.Export.Tar
-- Copyright: (c) 2017 Red Hat, Inc.
-- License: LGPL
--
-- Maintainer: https://github.com/weldr
-- Stability: alpha
-- Portability: portable
--
-- Functions for exporting objects from the BDCS into a tar file.
module BDCS.Export.Tar(tarSink)
where
import qualified Codec.Archive.Tar as Tar
import Control.Monad.IO.Class(MonadIO, liftIO)
import Data.ByteString.Lazy(writeFile)
import Data.Conduit(Consumer)
import qualified Data.Conduit.List as CL
import Prelude hiding(writeFile)
-- | A 'Consumer' that writes objects (in the form of 'Tar.Entry' records) into a tar archive
-- with the provided name. To convert objects into an Entry, see 'BDCS.CS.objectToTarEntry'.
tarSink :: MonadIO m => FilePath -> Consumer Tar.Entry m ()
tarSink out_path = do
entries <- CL.consume
liftIO $ writeFile out_path (Tar.write entries)