packages feed

unliftio 0.2.5.0 → 0.2.6.0

raw patch · 3 files changed

+492/−2 lines, 3 filesdep +timePVP ok

version bump matches the API change (PVP)

Dependencies added: time

API changes (from Hackage documentation)

+ UnliftIO.Directory: XdgCache :: XdgDirectory
+ UnliftIO.Directory: XdgConfig :: XdgDirectory
+ UnliftIO.Directory: XdgData :: XdgDirectory
+ UnliftIO.Directory: canonicalizePath :: MonadIO m => FilePath -> m FilePath
+ UnliftIO.Directory: copyFile :: MonadIO m => FilePath -> FilePath -> m ()
+ UnliftIO.Directory: copyFileWithMetadata :: MonadIO m => FilePath -> FilePath -> m ()
+ UnliftIO.Directory: copyPermissions :: MonadIO m => FilePath -> FilePath -> m ()
+ UnliftIO.Directory: createDirectory :: MonadIO m => FilePath -> m ()
+ UnliftIO.Directory: createDirectoryIfMissing :: MonadIO m => Bool -> FilePath -> m ()
+ UnliftIO.Directory: data Permissions :: *
+ UnliftIO.Directory: data XdgDirectory :: *
+ UnliftIO.Directory: doesDirectoryExist :: MonadIO m => FilePath -> m Bool
+ UnliftIO.Directory: doesFileExist :: MonadIO m => FilePath -> m Bool
+ UnliftIO.Directory: doesPathExist :: MonadIO m => FilePath -> m Bool
+ UnliftIO.Directory: emptyPermissions :: Permissions
+ UnliftIO.Directory: exeExtension :: String
+ UnliftIO.Directory: executable :: Permissions -> Bool
+ UnliftIO.Directory: findExecutable :: MonadIO m => String -> m (Maybe FilePath)
+ UnliftIO.Directory: findExecutables :: MonadIO m => String -> m [FilePath]
+ UnliftIO.Directory: findExecutablesInDirectories :: MonadIO m => [FilePath] -> String -> m [FilePath]
+ UnliftIO.Directory: findFile :: MonadIO m => [FilePath] -> String -> m (Maybe FilePath)
+ UnliftIO.Directory: findFileWith :: MonadUnliftIO m => (FilePath -> m Bool) -> [FilePath] -> String -> m (Maybe FilePath)
+ UnliftIO.Directory: findFiles :: MonadIO m => [FilePath] -> String -> m [FilePath]
+ UnliftIO.Directory: findFilesWith :: MonadUnliftIO m => (FilePath -> m Bool) -> [FilePath] -> String -> m [FilePath]
+ UnliftIO.Directory: getAccessTime :: MonadIO m => FilePath -> m UTCTime
+ UnliftIO.Directory: getAppUserDataDirectory :: MonadIO m => FilePath -> m FilePath
+ UnliftIO.Directory: getCurrentDirectory :: MonadIO m => m FilePath
+ UnliftIO.Directory: getDirectoryContents :: MonadIO m => FilePath -> m [FilePath]
+ UnliftIO.Directory: getFileSize :: MonadIO m => FilePath -> m Integer
+ UnliftIO.Directory: getHomeDirectory :: MonadIO m => m FilePath
+ UnliftIO.Directory: getModificationTime :: MonadIO m => FilePath -> m UTCTime
+ UnliftIO.Directory: getPermissions :: MonadIO m => FilePath -> m Permissions
+ UnliftIO.Directory: getTemporaryDirectory :: MonadIO m => m FilePath
+ UnliftIO.Directory: getUserDocumentsDirectory :: MonadIO m => m FilePath
+ UnliftIO.Directory: getXdgDirectory :: MonadIO m => XdgDirectory -> FilePath -> m FilePath
+ UnliftIO.Directory: listDirectory :: MonadIO m => FilePath -> m [FilePath]
+ UnliftIO.Directory: makeAbsolute :: MonadIO m => FilePath -> m FilePath
+ UnliftIO.Directory: makeRelativeToCurrentDirectory :: MonadIO m => FilePath -> m FilePath
+ UnliftIO.Directory: pathIsSymbolicLink :: MonadIO m => FilePath -> m Bool
+ UnliftIO.Directory: readable :: Permissions -> Bool
+ UnliftIO.Directory: removeDirectory :: MonadIO m => FilePath -> m ()
+ UnliftIO.Directory: removeDirectoryRecursive :: MonadIO m => FilePath -> m ()
+ UnliftIO.Directory: removeFile :: MonadIO m => FilePath -> m ()
+ UnliftIO.Directory: removePathForcibly :: MonadIO m => FilePath -> m ()
+ UnliftIO.Directory: renameDirectory :: MonadIO m => FilePath -> FilePath -> m ()
+ UnliftIO.Directory: renameFile :: MonadIO m => FilePath -> FilePath -> m ()
+ UnliftIO.Directory: renamePath :: MonadIO m => FilePath -> FilePath -> m ()
+ UnliftIO.Directory: searchable :: Permissions -> Bool
+ UnliftIO.Directory: setAccessTime :: MonadIO m => FilePath -> UTCTime -> m ()
+ UnliftIO.Directory: setCurrentDirectory :: MonadIO m => FilePath -> m ()
+ UnliftIO.Directory: setModificationTime :: MonadIO m => FilePath -> UTCTime -> m ()
+ UnliftIO.Directory: setOwnerExecutable :: Bool -> Permissions -> Permissions
+ UnliftIO.Directory: setOwnerReadable :: Bool -> Permissions -> Permissions
+ UnliftIO.Directory: setOwnerSearchable :: Bool -> Permissions -> Permissions
+ UnliftIO.Directory: setOwnerWritable :: Bool -> Permissions -> Permissions
+ UnliftIO.Directory: setPermissions :: MonadIO m => FilePath -> Permissions -> m ()
+ UnliftIO.Directory: withCurrentDirectory :: MonadUnliftIO m => FilePath -> m a -> m a
+ UnliftIO.Directory: writable :: Permissions -> Bool

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+## 0.2.6.0++* Add `UnliftIO.Directory`+ ## 0.2.5.0  * Add `UnliftIO.Environment`/`UnliftIO.Foreign`/`UnliftIO.Process`
+ src/UnliftIO/Directory.hs view
@@ -0,0 +1,483 @@+{-# LANGUAGE CPP #-}+-- | Unlifted "System.Directory".+--+-- @since 0.2.6.0++module UnliftIO.Directory (+    -- * Actions on directories+    createDirectory+  , createDirectoryIfMissing+  , removeDirectory+  , removeDirectoryRecursive+#if MIN_VERSION_directory(1,2,7)+  , removePathForcibly+#endif+  , renameDirectory+#if MIN_VERSION_directory(1,2,5)+  , listDirectory+#endif+  , getDirectoryContents++  -- ** Current working directory+  , getCurrentDirectory+  , setCurrentDirectory+#if MIN_VERSION_directory(1,2,3)+  , withCurrentDirectory+#endif++  -- * Pre-defined directories+  , getHomeDirectory+#if MIN_VERSION_directory(1,2,3)+  , XdgDirectory(..)+  , getXdgDirectory+#endif+  , getAppUserDataDirectory+  , getUserDocumentsDirectory+  , getTemporaryDirectory++  -- * Actions on files+  , removeFile+  , renameFile+#if MIN_VERSION_directory(1,2,7)+  , renamePath+#endif+  , copyFile+#if MIN_VERSION_directory(1,2,6)+  , copyFileWithMetadata+#endif+  , canonicalizePath+#if MIN_VERSION_directory(1,2,2)+  , makeAbsolute+#endif+  , makeRelativeToCurrentDirectory+  , findExecutable+#if MIN_VERSION_directory(1,2,2)+  , findExecutables+#endif+#if MIN_VERSION_directory(1,2,4)+  , findExecutablesInDirectories+#endif+  , findFile+#if MIN_VERSION_directory(1,2,1)+  , findFiles+#endif+#if MIN_VERSION_directory(1,2,6)+  , findFileWith+#endif+#if MIN_VERSION_directory(1,2,1)+  , findFilesWith+#endif+#if MIN_VERSION_directory(1,2,4)+  , exeExtension+#endif+#if MIN_VERSION_directory(1,2,7)+  , getFileSize+#endif++  -- * Existence tests+#if MIN_VERSION_directory(1,2,7)+  , doesPathExist+#endif+  , doesFileExist+  , doesDirectoryExist++#if MIN_VERSION_directory(1,3,0)+  -- * Symbolic links+  , pathIsSymbolicLink+#endif++  -- * Permissions+  , Permissions+  , emptyPermissions+  , readable+  , writable+  , executable+  , searchable+  , setOwnerReadable+  , setOwnerWritable+  , setOwnerExecutable+  , setOwnerSearchable+  , getPermissions+  , setPermissions+  , copyPermissions++  -- * Timestamps+#if MIN_VERSION_directory(1,2,3)+  , getAccessTime+#endif+  , getModificationTime+#if MIN_VERSION_directory(1,2,3)+  , setAccessTime+  , setModificationTime+#endif+  ) where++import Control.Monad.IO.Unlift+import Data.Time.Clock+import qualified System.Directory as D+import System.Directory+  ( Permissions+#if MIN_VERSION_directory(1,2,3)+  , XdgDirectory(..)+#endif+  , emptyPermissions+#if MIN_VERSION_directory(1,2,4)+  , exeExtension+#endif+  , executable+  , readable+  , searchable+  , setOwnerExecutable+  , setOwnerReadable+  , setOwnerSearchable+  , setOwnerWritable+  , writable+  )++-- | Lifted 'D.createDirectory'.+--+-- @since 0.2.6.0+{-# INLINE createDirectory #-}+createDirectory :: MonadIO m => FilePath -> m ()+createDirectory = liftIO . D.createDirectory++-- | Lifted 'D.createDirectoryIfMissing'.+--+-- @since 0.2.6.0+{-# INLINE createDirectoryIfMissing #-}+createDirectoryIfMissing :: MonadIO m => Bool -> FilePath -> m ()+createDirectoryIfMissing create_parents path0 =+  liftIO (D.createDirectoryIfMissing create_parents path0)++-- | Lifted 'D.removeDirectory'.+--+-- @since 0.2.6.0+{-# INLINE removeDirectory #-}+removeDirectory :: MonadIO m => FilePath -> m ()+removeDirectory = liftIO . D.removeDirectory++-- | Lifted 'D.removeDirectoryRecursive'.+--+-- @since 0.2.6.0+{-# INLINE removeDirectoryRecursive #-}+removeDirectoryRecursive :: MonadIO m => FilePath -> m ()+removeDirectoryRecursive = liftIO . D.removeDirectoryRecursive++#if MIN_VERSION_directory(1,2,7)+-- | Lifted 'D.removePathForcibly'.+--+-- @since 0.2.6.0+{-# INLINE removePathForcibly #-}+removePathForcibly :: MonadIO m => FilePath -> m ()+removePathForcibly = liftIO . D.removePathForcibly+#endif++-- | Lifted 'D.renameDirectory'.+--+-- @since 0.2.6.0+{-# INLINE renameDirectory #-}+renameDirectory :: MonadIO m => FilePath -> FilePath -> m ()+renameDirectory opath npath = liftIO (D.renameDirectory opath npath)++#if MIN_VERSION_directory(1,2,5)+-- | Lifted 'D.listDirectory'.+--+-- @since 0.2.6.0+{-# INLINE listDirectory #-}+listDirectory :: MonadIO m => FilePath -> m [FilePath]+listDirectory = liftIO . D.listDirectory+#endif++-- | Lifted 'D.getDirectoryContents'.+--+-- @since 0.2.6.0+{-# INLINE getDirectoryContents #-}+getDirectoryContents :: MonadIO m => FilePath -> m [FilePath]+getDirectoryContents = liftIO . D.getDirectoryContents++-- | Lifted 'D.getCurrentDirectory'.+--+-- @since 0.2.6.0+{-# INLINE getCurrentDirectory #-}+getCurrentDirectory :: MonadIO m => m FilePath+getCurrentDirectory = liftIO D.getCurrentDirectory++-- | Lifted 'D.setCurrentDirectory'.+--+-- @since 0.2.6.0+{-# INLINE setCurrentDirectory #-}+setCurrentDirectory :: MonadIO m => FilePath -> m ()+setCurrentDirectory = liftIO . D.setCurrentDirectory++#if MIN_VERSION_directory(1,2,3)+-- | Unlifted 'D.withCurrentDirectory'.+--+-- @since 0.2.6.0+{-# INLINE withCurrentDirectory #-}+withCurrentDirectory :: MonadUnliftIO m => FilePath -> m a -> m a+withCurrentDirectory dir action =+  withRunInIO (\u -> D.withCurrentDirectory dir (u action))+#endif++-- | Lifted 'D.getHomeDirectory'.+--+-- @since 0.2.6.0+{-# INLINE getHomeDirectory #-}+getHomeDirectory :: MonadIO m => m FilePath+getHomeDirectory = liftIO D.getHomeDirectory++#if MIN_VERSION_directory(1,2,3)+-- | Lifted 'D.getXdgDirectory'.+--+-- @since 0.2.6.0+{-# INLINE getXdgDirectory #-}+getXdgDirectory :: MonadIO m => XdgDirectory -> FilePath -> m FilePath+getXdgDirectory xdgDir suffix = liftIO (D.getXdgDirectory xdgDir suffix)+#endif++-- | Lifted 'D.getAppUserDataDirectory'.+--+-- @since 0.2.6.0+{-# INLINE getAppUserDataDirectory #-}+getAppUserDataDirectory :: MonadIO m => FilePath -> m FilePath+getAppUserDataDirectory = liftIO . D.getAppUserDataDirectory++-- | Lifted 'D.getUserDocumentsDirectory'.+--+-- @since 0.2.6.0+{-# INLINE getUserDocumentsDirectory #-}+getUserDocumentsDirectory :: MonadIO m => m FilePath+getUserDocumentsDirectory = liftIO D.getUserDocumentsDirectory++-- | Lifted 'D.getTemporaryDirectory'.+--+-- @since 0.2.6.0+{-# INLINE getTemporaryDirectory #-}+getTemporaryDirectory :: MonadIO m => m FilePath+getTemporaryDirectory = liftIO D.getTemporaryDirectory++-- | Lifted 'D.removeFile'.+--+-- @since 0.2.6.0+{-# INLINE removeFile #-}+removeFile :: MonadIO m => FilePath -> m ()+removeFile = liftIO . D.removeFile++-- | Lifted 'D.renameFile'.+--+-- @since 0.2.6.0+{-# INLINE renameFile #-}+renameFile :: MonadIO m => FilePath -> FilePath -> m ()+renameFile opath npath = liftIO (D.renameFile opath npath)++#if MIN_VERSION_directory(1,2,7)+-- | Lifted 'D.renamePath'.+--+-- @since 0.2.6.0+{-# INLINE renamePath #-}+renamePath :: MonadIO m => FilePath -> FilePath -> m ()+renamePath opath npath = liftIO (D.renamePath opath npath)+#endif++-- | Lifted 'D.copyFile'.+--+-- @since 0.2.6.0+{-# INLINE copyFile #-}+copyFile :: MonadIO m => FilePath -> FilePath -> m ()+copyFile fromFPath toFPath = liftIO (D.copyFile fromFPath toFPath)++#if MIN_VERSION_directory(1,2,6)+-- | Lifted 'D.copyFileWithMetadata'.+--+-- @since 0.2.6.0+{-# INLINE copyFileWithMetadata #-}+copyFileWithMetadata :: MonadIO m => FilePath -> FilePath -> m ()+copyFileWithMetadata src dst = liftIO (D.copyFileWithMetadata src dst)+#endif++-- | Lifted 'D.canonicalizePath'.+--+-- @since 0.2.6.0+{-# INLINE canonicalizePath #-}+canonicalizePath :: MonadIO m => FilePath -> m FilePath+canonicalizePath = liftIO . D.canonicalizePath++#if MIN_VERSION_directory(1,2,2)+-- | Lifted 'D.makeAbsolute'.+--+-- @since 0.2.6.0+{-# INLINE makeAbsolute #-}+makeAbsolute :: MonadIO m => FilePath -> m FilePath+makeAbsolute = liftIO . D.makeAbsolute+#endif++-- | Lifted 'D.makeRelativeToCurrentDirectory'.+--+-- @since 0.2.6.0+{-# INLINE makeRelativeToCurrentDirectory #-}+makeRelativeToCurrentDirectory :: MonadIO m => FilePath -> m FilePath+makeRelativeToCurrentDirectory = liftIO . D.makeRelativeToCurrentDirectory++-- | Lifted 'D.findExecutable'.+--+-- @since 0.2.6.0+{-# INLINE findExecutable #-}+findExecutable :: MonadIO m => String -> m (Maybe FilePath)+findExecutable = liftIO . D.findExecutable++#if MIN_VERSION_directory(1,2,2)+-- | Lifted 'D.findExecutables'.+--+-- @since 0.2.6.0+{-# INLINE findExecutables #-}+findExecutables :: MonadIO m => String -> m [FilePath]+findExecutables = liftIO . D.findExecutables+#endif++#if MIN_VERSION_directory(1,2,4)+-- | Lifted 'D.findExecutablesInDirectories'.+--+-- @since 0.2.6.0+{-# INLINE findExecutablesInDirectories #-}+findExecutablesInDirectories ::+     MonadIO m => [FilePath] -> String -> m [FilePath]+findExecutablesInDirectories path binary =+  liftIO (D.findExecutablesInDirectories path binary)+#endif++-- | Lifted 'D.findFile'.+--+-- @since 0.2.6.0+{-# INLINE findFile #-}+findFile :: MonadIO m => [FilePath] -> String -> m (Maybe FilePath)+findFile ds name = liftIO (D.findFile ds name)++#if MIN_VERSION_directory(1,2,1)+-- | Lifted 'D.findFiles'.+--+-- @since 0.2.6.0+{-# INLINE findFiles #-}+findFiles :: MonadIO m => [FilePath] -> String -> m [FilePath]+findFiles ds name = liftIO (D.findFiles ds name)+#endif++#if MIN_VERSION_directory(1,2,6)+-- | Unlifted 'D.findFileWith'.+--+-- @since 0.2.6.0+{-# INLINE findFileWith #-}+findFileWith ::+     MonadUnliftIO m+  => (FilePath -> m Bool)+  -> [FilePath]+  -> String+  -> m (Maybe FilePath)+findFileWith f ds name = withRunInIO (\u -> D.findFileWith (u . f) ds name)+#endif++#if MIN_VERSION_directory(1,2,1)+-- | Unlifted 'D.findFilesWith'.+--+-- @since 0.2.6.0+{-# INLINE findFilesWith #-}+findFilesWith ::+     MonadUnliftIO m+  => (FilePath -> m Bool)+  -> [FilePath]+  -> String+  -> m [FilePath]+findFilesWith f ds name = withRunInIO (\u -> D.findFilesWith (u . f) ds name)+#endif++#if MIN_VERSION_directory(1,2,7)+-- | Lifted 'D.getFileSize'.+--+-- @since 0.2.6.0+{-# INLINE getFileSize #-}+getFileSize :: MonadIO m => FilePath -> m Integer+getFileSize = liftIO . D.getFileSize+#endif++#if MIN_VERSION_directory(1,2,7)+-- | Lifted 'D.doesPathExist'.+--+-- @since 0.2.6.0+{-# INLINE doesPathExist #-}+doesPathExist :: MonadIO m => FilePath -> m Bool+doesPathExist = liftIO . D.doesPathExist+#endif++-- | Lifted 'D.doesFileExist'.+--+-- @since 0.2.6.0+{-# INLINE doesFileExist #-}+doesFileExist :: MonadIO m => FilePath -> m Bool+doesFileExist = liftIO . D.doesFileExist++-- | Lifted 'D.doesDirectoryExist'.+--+-- @since 0.2.6.0+{-# INLINE doesDirectoryExist #-}+doesDirectoryExist :: MonadIO m => FilePath -> m Bool+doesDirectoryExist = liftIO . D.doesDirectoryExist++#if MIN_VERSION_directory(1,3,0)+-- | Lifted 'D.pathIsSymbolicLink'.+--+-- @since 0.2.6.0+{-# INLINE pathIsSymbolicLink #-}+pathIsSymbolicLink :: MonadIO m => FilePath -> m Bool+pathIsSymbolicLink = liftIO . D.pathIsSymbolicLink+#endif++-- | Lifted 'D.getPermissions'.+--+-- @since 0.2.6.0+{-# INLINE getPermissions #-}+getPermissions :: MonadIO m => FilePath -> m Permissions+getPermissions = liftIO . D.getPermissions++-- | Lifted 'D.setPermissions'.+--+-- @since 0.2.6.0+{-# INLINE setPermissions #-}+setPermissions :: MonadIO m => FilePath -> Permissions -> m ()+setPermissions name p = liftIO (D.setPermissions name p)++-- | Lifted 'D.copyPermissions'.+--+-- @since 0.2.6.0+{-# INLINE copyPermissions #-}+copyPermissions :: MonadIO m => FilePath -> FilePath -> m ()+copyPermissions source dest = liftIO (D.copyPermissions source dest)++#if MIN_VERSION_directory(1,2,3)+-- | Lifted 'D.getAccessTime'.+--+-- @since 0.2.6.0+{-# INLINE getAccessTime #-}+getAccessTime :: MonadIO m => FilePath -> m UTCTime+getAccessTime = liftIO . D.getAccessTime+#endif++-- | Lifted 'D.getModificationTime'.+--+-- @since 0.2.6.0+{-# INLINE getModificationTime #-}+getModificationTime :: MonadIO m => FilePath -> m UTCTime+getModificationTime = liftIO . D.getModificationTime++#if MIN_VERSION_directory(1,2,3)+-- | Lifted 'D.setAccessTime'.+--+-- @since 0.2.6.0+{-# INLINE setAccessTime #-}+setAccessTime :: MonadIO m => FilePath -> UTCTime -> m ()+setAccessTime path atime = liftIO (D.setAccessTime path atime)++-- | Lifted 'D.setModificationTime'.+--+-- @since 0.2.6.0+setModificationTime :: MonadIO m => FilePath -> UTCTime -> m ()+setModificationTime path mtime = liftIO (D.setModificationTime path mtime)+#endif
unliftio.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 7eb86a47bfc4a1463d455dd356bf07f248d867021c31a7f0ab4382936315e0ac+-- hash: e2e3224b8cb626ef2d88a40f99a5597a587c19a91b00dc69ec4cd6115c65ec1f  name:           unliftio-version:        0.2.5.0+version:        0.2.6.0 synopsis:       The MonadUnliftIO typeclass for unlifting monads to IO (batteries included) description:    Please see the documentation and README at <https://www.stackage.org/package/unliftio> category:       Control@@ -33,6 +33,7 @@     , filepath     , process >=1.2.0.0     , stm >=2.4.3+    , time     , transformers     , unliftio-core >=0.1.1.0   if !os(Windows)@@ -53,6 +54,7 @@       UnliftIO.Async       UnliftIO.Chan       UnliftIO.Concurrent+      UnliftIO.Directory       UnliftIO.Environment       UnliftIO.Exception       UnliftIO.Foreign@@ -81,6 +83,7 @@     , hspec     , process >=1.2.0.0     , stm >=2.4.3+    , time     , transformers     , unliftio     , unliftio-core >=0.1.1.0