module Archive.Compression ( Decompressor
, Compressor
, unpackFileToDirAndDecompress
, packFromFilesAndCompress
, packFromDirAndCompress
) where
import Archive
import qualified Data.ByteString.Lazy as BSL
import System.Directory.Recursive
type Decompressor = BSL.ByteString -> BSL.ByteString
type Compressor = BSL.ByteString -> BSL.ByteString
unpackFileToDirAndDecompress :: Decompressor
-> FilePath
-> FilePath
-> IO ()
unpackFileToDirAndDecompress f tar dir = unpackToDir dir =<< (f <$> BSL.readFile tar)
packFromDirAndCompress :: Compressor -> FilePath -> FilePath -> IO ()
packFromDirAndCompress f dir tar = packFromFilesAndCompress f tar =<< getDirRecursive dir
packFromFilesAndCompress :: Compressor -> FilePath -> [FilePath] -> IO ()
packFromFilesAndCompress f tar fps = BSL.writeFile tar =<< (f <$> packFiles fps)