-- | This module contains higher-level functions for working with archives in
-- Haskell. See "Codec.Archive.Foreign" for direct bindings to
-- libarchive.
module Codec.Archive
    ( -- * High-level functionality
      unpackToDir
    , unpackToDirLazy
    , unpackArchive
    , entriesToFile
    , entriesToFileZip
    , entriesToFile7Zip
    , entriesToFileCpio
    , entriesToFileXar
    , entriesToFileShar
    , entriesToBS
    , entriesToBS7zip
    , entriesToBSzip
    , entriesToBSL
    , entriesToBSLzip
    , entriesToBSL7zip
    , entriesToBSLCpio
    , entriesToBSLXar
    , entriesToBSLShar
    , readArchiveFile
    , readArchiveBS
    , readArchiveBSL
    , packFiles
    , packFilesZip
    , packFiles7zip
    , packFilesCpio
    , packFilesXar
    , packFilesShar
    , packToFile
    , packToFileZip
    , packToFile7Zip
    , packToFileCpio
    , packToFileXar
    , packToFileShar
    -- * Concrete (Haskell) types
    , ArchiveResult (..)
    , ArchiveEntryDigest (..)
    , Entry (..)
    , Symlink (..)
    , EntryContent (..)
    , Ownership (..)
    , Permissions
    , ModTime
    , Id
    -- * Archive monad
    , ArchiveM
    , runArchiveM
    , throwArchiveM
    -- * Permissions helpers
    , standardPermissions
    , executablePermissions
    ) where

import           Codec.Archive.Internal.Monad
import           Codec.Archive.Internal.Pack
import           Codec.Archive.Internal.Pack.Lazy
import           Codec.Archive.Internal.Unpack
import           Codec.Archive.Internal.Unpack.Lazy
import           Codec.Archive.Permissions
import           Codec.Archive.Types