{-# LINE 1 "src/Archive/FFI.cpphs" #-}
# 1 "src/Archive/FFI.cpphs"
# 1 "<built-in>" 1
# 20 "<built-in>"
# 1 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h" 1




# 13 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 24 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 35 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 46 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 57 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 68 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 79 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 90 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 101 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 112 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 123 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 134 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 145 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"



# 156 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.6.5/archive-libarchive-0.2.2.0/build/autogen/cabal_macros.h"


# 21 "<built-in>" 2
# 1 "/Users/vmchale/.ghcup/ghc/8.6.5/lib/ghc-8.6.5/include/ghcversion.h" 1
















# 22 "<built-in>" 2
# 1 "src/Archive/FFI.cpphs" 2
module Archive.FFI ( Entry
                   , Error
                   , readArchiveBytes
                   , unpackToDir
                   , writeArchiveBytes
                   , packFiles
                   , versionInfo
                   ) where

import qualified Codec.Archive                 as FFI
import           Codec.Archive.Foreign.Archive (archiveVersionString)
import           Control.Composition           ((.*))
import qualified Data.ByteString.Lazy          as BSL

type Entry = FFI.Entry

type Error = FFI.ArchiveResult

writeArchiveBytes :: [Entry] -> BSL.ByteString
writeArchiveBytes = FFI.entriesToBSL

readArchiveBytes :: BSL.ByteString -> Either Error [Entry]
readArchiveBytes = FFI.readArchiveBSL

unpackToDir :: FilePath -> BSL.ByteString -> IO ()
unpackToDir = fmap (either showError id) .* FFI.runArchiveM .* FFI.unpackToDirLazy
    where showError = error . show

packFiles :: [FilePath] -> IO BSL.ByteString
packFiles = FFI.packFiles

-- | @since 0.2.2.0
versionInfo :: String
versionInfo = "libarchive-hs: " ++ "2.2.0.1" ++ "\n" ++ archiveVersionString