packages feed

libarchive-3.0.0.0: mem/Mem.hs

module Main ( main ) where

import           Codec.Archive
import           Control.Exception    (throw)
import qualified Data.ByteString.Lazy as BSL

forceList :: [a] -> IO ()
forceList = (`seq` mempty) . last

main :: IO ()
main =
    sequence_
        [ readArc
        , readWriteArc
        , readArcBS
        ]

readArc :: IO ()
readArc = forceList =<< throwArchiveM
    (readArchiveFile "test/data/llvm-9.0.0.src.tar")

readArcBS :: IO ()
readArcBS = forceList =<< fmap (either throw id)
    (readArchiveBSL <$> BSL.readFile "test/data/llvm-9.0.0.src.tar")

readWriteArc :: IO ()
readWriteArc = forceList . BSL.toChunks =<< throwArchiveM
    (entriesToBSL <$> readArchiveFile "test/data/llvm-9.0.0.src.tar")