{-# LANGUAGE CPP #-}
module Distribution.Compat.Directory
( listDirectory
, makeAbsolute
, doesPathExist
) where
#if MIN_VERSION_directory(1,2,7)
import System.Directory as Dir hiding (doesPathExist)
import System.Directory (doesPathExist)
#else
import System.Directory as Dir
#endif
#if !MIN_VERSION_directory(1,2,2)
import System.FilePath as Path
#endif
#if !MIN_VERSION_directory(1,2,5)
listDirectory :: FilePath -> IO [FilePath]
listDirectory path =
filter f `fmap` Dir.getDirectoryContents path
where f filename = filename /= "." && filename /= ".."
#endif
#if !MIN_VERSION_directory(1,2,2)
makeAbsolute :: FilePath -> IO FilePath
makeAbsolute p | Path.isAbsolute p = return p
| otherwise = do
cwd <- Dir.getCurrentDirectory
return $ cwd </> p
#endif
#if !MIN_VERSION_directory(1,2,7)
doesPathExist :: FilePath -> IO Bool
doesPathExist path = do
e <- doesDirectoryExist path
if e
then return True
else doesFileExist path
#endif