{-# LINE 1 "src/Archive/Tar.cpphs" #-}
# 1 "src/Archive/Tar.cpphs"
# 1 "<built-in>" 1
# 20 "<built-in>"
# 1 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h" 1
# 13 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 24 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 35 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 46 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 57 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 68 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 79 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 90 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 101 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 112 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 123 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 134 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 145 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 156 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 167 "/Users/vmchale/dev/forks/archive-backpack/dist-newstyle/build/x86_64-osx/ghc-8.8.3/archive-tar-0.2.2.1/build/autogen/cabal_macros.h"
# 21 "<built-in>" 2
# 1 "/Users/vmchale/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/include/ghcversion.h" 1
# 22 "<built-in>" 2
# 1 "src/Archive/Tar.cpphs" 2
module Archive.Tar ( Entry
, Error
, writeArchiveBytes
, unpackToDir
, readArchiveBytes
, packFiles
, versionInfo
) where
import Codec.Archive.Tar (Entries (..))
import qualified Codec.Archive.Tar as Tar
import Control.Composition ((.@))
import qualified Data.ByteString.Lazy as BSL
import qualified Data.Version as V
import qualified Paths_archive_tar as P
type Entry = Tar.Entry
type Error = Tar.FormatError
coerceToList :: Entries a -> Either a [Entry]
coerceToList (Next e es) = (e :) <$> coerceToList es
coerceToList Done = Right []
coerceToList (Fail ex) = Left ex
writeArchiveBytes :: [Entry] -> BSL.ByteString
writeArchiveBytes = Tar.write
readArchiveBytes :: BSL.ByteString -> Either Error [Entry]
readArchiveBytes = coerceToList . Tar.read
unpackToDir :: FilePath -> BSL.ByteString -> IO ()
unpackToDir = Tar.read .@ Tar.unpack
packFiles :: [FilePath] -> IO BSL.ByteString
packFiles = fmap Tar.write . Tar.pack "."
versionInfo :: String
versionInfo = "tar: " ++ "0.5.1.1" ++ "\narchive-tar: " ++ V.showVersion P.version