tar-0.1: Codec/Archive/Tar.hs
-- | This is a library for reading and writing TAR archives.
module Codec.Archive.Tar (
-- * TAR archive types
TarArchive(..),
TarEntry(..),
TarHeader(..),
TarFileType(..),
-- * Creating TAR archives
createTarFile,
createTarData,
createTarArchive,
createTarEntry,
recurseDirectories,
-- * Writing TAR archives
writeTarArchive,
writeTarFile,
-- * Extracting TAR archives
extractTarFile,
extractTarData,
extractTarArchive,
extractTarEntry,
-- * Reading TAR archives
readTarArchive,
readTarFile
) where
import Codec.Archive.Tar.Create
import Codec.Archive.Tar.Extract
import Codec.Archive.Tar.Read
import Codec.Archive.Tar.Types
import Codec.Archive.Tar.Write
import Control.Monad (liftM)
import qualified Data.ByteString.Lazy.Char8 as L
import Data.ByteString.Lazy (ByteString)
import System.IO
-- | Creates a TAR archive containing a number of files
-- and directories, and write the archive to a file.
--
-- See 'createTarArchive' and 'writeTarArchive' for more information.
createTarFile :: FilePath -- ^ File to write the archive to.
-> [FilePath] -- ^ Files and directories to include in the archive.
-> IO ()
createTarFile f fs = createTarData fs >>= L.writeFile f
-- | Creates a TAR archive containing a number of files
-- and directories, and returns the archive as a lazy ByteString.
--
-- See 'createTarArchive' and 'writeTarArchive' for more information.
createTarData :: [FilePath] -- ^ Files and directories to include in the archive.
-> IO ByteString
createTarData = liftM writeTarArchive . createTarArchive
-- | Writes a TAR archive to a file.
--
-- See 'writeTarArchive' for more information.
writeTarFile :: FilePath -- ^ The file to write the archive to.
-> TarArchive -- ^ The archive to write out.
-> IO ()
writeTarFile f = L.writeFile f . writeTarArchive
-- | Reads a TAR archive from a file.
--
-- See 'readTarArchive' for more information.
readTarFile :: FilePath -- ^ File to read the archive from.
-> IO TarArchive
readTarFile = liftM readTarArchive . L.readFile
-- | Reads a TAR archive from a file and extracts its contents into
-- the current directory.
--
-- See 'readTarArchive' and 'extractTarArchive' for more information.
extractTarFile :: FilePath -- ^ File from which the archive is read.
-> IO ()
extractTarFile f = L.readFile f >>= extractTarData
-- | Reads a TAR archive from a lazy ByteString and extracts its contents into
-- the current directory.
--
-- See 'readTarArchive' and 'extractTarArchive' for more information.
extractTarData :: ByteString -- ^ Data from which the archive is read.
-> IO ()
extractTarData = extractTarArchive . readTarArchive