{-# LANGUAGE CPP #-}
{-# LANGUAGE Safe #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module System.Path.Internal.Compat
( Applicative(..)
, (<$>)
, dirMakeAbsolute
, posixIsExtensionOf
) where
import Control.Applicative
import Data.List (isSuffixOf)
import qualified System.Directory as Dir
import qualified System.FilePath as FP.Native
import qualified System.FilePath.Posix as FP.Posix
dirMakeAbsolute :: FilePath -> IO FilePath
#if MIN_VERSION_directory(1,2,2)
dirMakeAbsolute = Dir.makeAbsolute
#else
dirMakeAbsolute = (FP.Native.normalise <$>) . absolutize
where
absolutize path
| FP.Native.isRelative path
= (FP.Native.</> path)
. FP.Native.addTrailingPathSeparator <$>
Dir.getCurrentDirectory
| otherwise = return path
#endif
posixIsExtensionOf :: String -> FilePath -> Bool
#if MIN_VERSION_filepath(1,4,2)
posixIsExtensionOf = FP.Posix.isExtensionOf
#else
posixIsExtensionOf ext@('.':_) = isSuffixOf ext . FP.Posix.takeExtensions
posixIsExtensionOf ext = isSuffixOf ('.':ext) . FP.Posix.takeExtensions
#endif