diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-02-06 15:58:06 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-02-06 15:58:06 -0400 |
commit | 4c8cfa61bfb6fa1d9482a6b07b04d9ec11be4d0d (patch) | |
tree | fafe14b7fa3b445e9be5b87b0cbd005425f663be /CmdLine | |
parent | e462ad8071c58613e5cd2859ac982051091f8075 (diff) |
import: Support file matching options such as --exclude, --include, --smallerthan, --largerthan
Diffstat (limited to 'CmdLine')
-rw-r--r-- | CmdLine/Seek.hs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/CmdLine/Seek.hs b/CmdLine/Seek.hs index 4a0bb299b..f3e37969a 100644 --- a/CmdLine/Seek.hs +++ b/CmdLine/Seek.hs @@ -66,14 +66,20 @@ withFilesInRefs a = mapM_ go void $ commandAction $ a f k withPathContents :: ((FilePath, FilePath) -> CommandStart) -> CommandSeek -withPathContents a params = seekActions $ - map a . concat <$> liftIO (mapM get params) +withPathContents a params = do + matcher <- Limit.getMatcher + seekActions $ map a <$> (filterM (checkmatch matcher) =<< ps) where + ps = concat <$> liftIO (mapM get params) get p = ifM (isDirectory <$> getFileStatus p) ( map (\f -> (f, makeRelative (parentDir p) f)) <$> dirContentsRecursiveSkipping (".git" `isSuffixOf`) True p , return [(p, takeFileName p)] ) + checkmatch matcher (f, relf) = matcher $ MatchingFile $ FileInfo + { relFile = f + , matchFile = relf + } withWords :: ([String] -> CommandStart) -> CommandSeek withWords a params = seekActions $ return [a params] |