module HaskellWorks.Ci.Assist.Tar where import Codec.Archive.Tar import Codec.Archive.Tar.Entry import qualified Data.ByteString.Lazy as LBS updateEntryWith :: (FilePath -> Bool) -> (LBS.ByteString -> LBS.ByteString) -> Entry -> Entry updateEntryWith pred transform entry = if pred (entryPath entry) then case entryContent entry of NormalFile bs size -> let bs' = transform bs in entry { entryContent = NormalFile bs' (LBS.length bs') } _ -> entry else entry mapEntriesWith :: (FilePath -> Bool) -> (LBS.ByteString -> LBS.ByteString) -> Entries e -> Entries e mapEntriesWith pred transform = mapEntriesNoFail (updateEntryWith pred transform)