find-conduit-0.1.0: A file-finding conduit that allows user control over traversals.

Safe HaskellNone

Data.Conduit.Find

Synopsis

Documentation

type Predicate m a = Looped m a aSource

sourceFileEntries :: MonadResource m => Looped m FilePath FileEntry -> FilePath -> Producer m FileEntrySource

Walk through the entries of a directory tree, allowing the user to specify a Predicate which may decides not only which entries to yield from the conduit, but also which directories to follow, and how to recurse into that directory by permitting the use of a subsequent Predicate.

Note that the followSymlinks parameter to this function has a different meaning than it does for sourceDirectoryDeep: if True, symlinks are never passed to the predicate, only what they point to; if False, symlinks are never read at all. For sourceDirectoryDeep, if followSymlinks is False it only prevents directory symlinks from being read.

matchAll :: Monad m => Predicate m aSource

Return all entries. This is the same as sourceDirectoryDeep, except that the FileStatus structure for each entry is also provided. As a result, only one stat call is ever made per entry, compared to two per directory in the current version of sourceDirectoryDeep.

ignoreVcs :: (MonadIO m, HasFilePath e) => Predicate m eSource

Return all entries, except for those within version-control metadata directories (and not including the version control directory itself either).

regexMatcherSource

Arguments

:: (Monad m, HasFilePath e) 
=> (FilePath -> FilePath)

Function that specifies which part of the pathname to match against. Use this to match against only filenames, or to relativize the path against the search root before comparing.

-> Text

The regular expression search pattern.

-> Predicate m e 

The regexMatcher predicate builder matches some part of every path against a given regex. Use the simpler regex if you just want to apply a regex to every file name.

regex :: (Monad m, HasFilePath e) => Text -> Predicate m eSource

Find every entry whose filename part matching the given regular expression.

glob :: (Monad m, HasFilePath e) => Text -> Predicate m eSource

Find every entry whose filename part matching the given filename globbing expression. For example: glob *.hs.

findWithPreFilter :: (MonadIO m, MonadResource m) => FilePath -> Bool -> Predicate m FilePath -> Predicate m FileEntry -> Producer m FileEntrySource

Run a find, but using a pre-pass filter on the FilePaths, to eliminates files from consideration early and avoid calling stat on them.

or_ :: MonadIO m => Looped m a b -> Looped m a b -> Looped m a bSource

and_ :: MonadIO m => Looped m a b -> Looped m a b -> Looped m a bSource

not_ :: MonadIO m => Looped m a a -> Looped m a aSource