module Archive.FFI ( Entry , Error , FP , readArchiveBytes , unpackToDirRaw , writeArchiveBytes , packFilesRaw , versionInfo , toFP ) where import qualified Codec.Archive as FFI import Codec.Archive.Foreign.Archive (archiveVersionString) import Control.Composition ((.*)) import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BSL import qualified Data.Version as V import qualified Paths_archive_libarchive as P type Entry = FFI.Entry FilePath BS.ByteString type Error = FFI.ArchiveResult type FP = FilePath toFP :: FilePath -> FP toFP = id writeArchiveBytes :: [Entry] -> BSL.ByteString writeArchiveBytes = FFI.entriesToBSL readArchiveBytes :: BSL.ByteString -> Either Error [Entry] readArchiveBytes = FFI.readArchiveBSL unpackToDirRaw :: FP -> BSL.ByteString -> IO () unpackToDirRaw = FFI.throwArchiveM .* FFI.unpackToDirLazy packFilesRaw :: [FP] -> IO BSL.ByteString packFilesRaw = FFI.packFiles -- | @since 0.2.2.0 versionInfo :: String versionInfo = "libarchive-hs: " ++ VERSION_libarchive ++ "\n" ++ archiveVersionString ++ "\n" ++ "archive-libarchive: " ++ V.showVersion P.version