packages feed

hpath-directory 0.13.3 → 0.13.4

raw patch · 3 files changed

+27/−7 lines, 3 filesdep +streamly-posixdep +transformersPVP ok

version bump matches the API change (PVP)

Dependencies added: streamly-posix, transformers

API changes (from Hackage documentation)

+ System.Posix.RawFilePath.Directory: getDirsFilesStream :: (MonadCatch m, MonadAsync m, MonadMask m) => RawFilePath -> IO (SerialT m RawFilePath)

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for hpath-directory +## 0.13.4 -- 2020-05-08++* Add getDirsFilesStream and use streamly-posix for dircontents (#34)+ ## 0.13.3 -- 2020-04-14  * Fix tests on mac
hpath-directory.cabal view
@@ -1,7 +1,7 @@ cabal-version:       >=1.10  name:                hpath-directory-version:             0.13.3+version:             0.13.4 synopsis:            Alternative to 'directory' package with ByteString based filepaths description:         This provides a safer alternative to the 'directory'                      package. FilePaths are ByteString based, so this@@ -44,7 +44,9 @@                        , safe-exceptions     >= 0.1                        , streamly            >= 0.7                        , streamly-bytestring >= 0.1.2+                       , streamly-posix      >= 0.1.0.1                        , time                >= 1.8+                       , transformers                        , unix                >= 2.5                        , unix-bytestring     >= 0.3                        , utf8-string
src/System/Posix/RawFilePath/Directory.hs view
@@ -27,7 +27,8 @@ -- Import as: -- > import System.Posix.RawFilePath.Directory -{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-}+{-# LANGUAGE FlexibleContexts #-} -- streamly  module System.Posix.RawFilePath.Directory   (@@ -82,6 +83,7 @@   -- * Directory reading   , getDirsFiles   , getDirsFiles'+  , getDirsFilesStream   -- * Filetype operations   , getFileType   -- * Others@@ -93,8 +95,11 @@  import           Control.Applicative            ( (<$>) ) import           Control.Exception.Safe         ( IOException+                                                , MonadCatch+                                                , MonadMask                                                 , bracket                                                 , bracketOnError+                                                , onException                                                 , throwIO                                                 , finally                                                 )@@ -105,6 +110,7 @@ import           Control.Monad.Catch            ( MonadThrow(..) ) import           Control.Monad.Fail             ( MonadFail ) import           Control.Monad.IfElse           ( unlessM )+import           Control.Monad.IO.Class         ( liftIO ) import qualified Data.ByteString               as BS import           Data.ByteString                ( ByteString ) import           Data.Traversable               ( for )@@ -155,6 +161,8 @@ import           Streamly.External.ByteString import qualified Streamly.External.ByteString.Lazy                                                as SL+import qualified Streamly.External.Posix.DirStream+                                               as SD import qualified Streamly.Data.Fold            as FL import           Streamly.Memory.Array import qualified Streamly.FileSystem.Handle    as FH@@ -1147,11 +1155,17 @@ -- of prepending the base path. getDirsFiles' :: RawFilePath        -- ^ dir to read               -> IO [RawFilePath]-getDirsFiles' fp = do-  fd          <- openFd fp SPI.ReadOnly [SPDF.oNofollow] Nothing-  rawContents <- getDirectoryContents' fd-  fmap catMaybes $ for rawContents $ \(_, f) ->-    if FP.isSpecialDirectoryEntry f then pure Nothing else pure $ Just f+getDirsFiles' fp = getDirsFilesStream fp >>= S.toList+++-- | Like 'getDirsFiles'', except returning a Stream.+getDirsFilesStream :: (MonadCatch m, MonadAsync m, MonadMask m)+                   => RawFilePath+                   -> IO (SerialT m RawFilePath)+getDirsFilesStream fp = do+  fd <- openFd fp SPI.ReadOnly [SPDF.oNofollow] Nothing+  ds <- SPDT.fdOpendir fd `onException` SPI.closeFd fd+  pure $ fmap snd $ SD.dirContentsStream ds