module Ignore.Types where
#if MIN_VERSION_base(4,8,0)
#else
import Data.Monoid
#endif
import Path
import qualified Data.Text as T
data VCS
= VCSGit
| VCSMercurial
| VCSDarcs
deriving (Show, Eq)
data IgnoreFile
= IgnoreFile
{ if_vcs :: VCS
, if_data :: Either (Path Abs File) T.Text
} deriving (Show, Eq)
newtype FileIgnoredChecker
= FileIgnoredChecker { runFileIgnoredChecker :: FilePath -> Bool }
instance Monoid FileIgnoredChecker where
mempty = FileIgnoredChecker $ const False
mappend (FileIgnoredChecker a) (FileIgnoredChecker b) =
FileIgnoredChecker $ \fp -> a fp || b fp