forked from GitHub/gf-core
(1) introduces the module GF.Infra.Concurreny with lifted concurrency
operators (to reduce uses of liftIO) and some additional concurrency
utilities, e.g. a function for sequential logging that is used in
both GF.CompileInParallel and GFServer.
(2) avoids leaving broken .gfo files behind if compilation is aborted.
26 lines
1.2 KiB
Haskell
26 lines
1.2 KiB
Haskell
-- | Isolate backwards incompatible library changes to 'getModificationTime'
|
|
-- and provide lifted versions of some directory operations
|
|
module GF.System.Directory(module GF.System.Directory,module D) where
|
|
import Control.Monad.Trans(MonadIO(..))
|
|
import qualified System.Directory as D
|
|
import System.Directory as D
|
|
hiding (canonicalizePath,createDirectoryIfMissing,
|
|
doesDirectoryExist,doesFileExist,getModificationTime,
|
|
getCurrentDirectory,getDirectoryContents,getPermissions,
|
|
removeFile,renameFile)
|
|
import Data.Time.Compat
|
|
|
|
canonicalizePath path = liftIO $ D.canonicalizePath path
|
|
createDirectoryIfMissing b = liftIO . D.createDirectoryIfMissing b
|
|
doesDirectoryExist path = liftIO $ D.doesDirectoryExist path
|
|
doesFileExist path = liftIO $ D.doesFileExist path
|
|
getModificationTime path = liftIO $ fmap toUTCTime (D.getModificationTime path)
|
|
getDirectoryContents path = liftIO $ D.getDirectoryContents path
|
|
|
|
getCurrentDirectory :: MonadIO io => io FilePath
|
|
getCurrentDirectory = liftIO D.getCurrentDirectory
|
|
getPermissions path = liftIO $ D.getPermissions path
|
|
|
|
removeFile path = liftIO $ D.removeFile path
|
|
renameFile path = liftIO . D.renameFile path
|