{-# LANGUAGE CPP #-} module Ignore.Types where #if MIN_VERSION_base(4,8,0) #else import Data.Monoid #endif import Path import qualified Data.Text as T -- | VCS type data VCS = VCSGit | VCSMercurial | VCSDarcs deriving (Show, Eq) -- | An ignore file data IgnoreFile = IgnoreFile { if_vcs :: VCS , if_data :: Either (Path Abs File) T.Text -- ^ Either a path to a file or an embedded 'T.Text' containing the ignore files data } deriving (Show, Eq) -- | Abstract checker if a file should be ignored 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