summaryrefslogtreecommitdiff
path: root/CmdLine
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-02-06 15:58:06 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-02-06 15:58:06 -0400
commit4c8cfa61bfb6fa1d9482a6b07b04d9ec11be4d0d (patch)
treefafe14b7fa3b445e9be5b87b0cbd005425f663be /CmdLine
parente462ad8071c58613e5cd2859ac982051091f8075 (diff)
import: Support file matching options such as --exclude, --include, --smallerthan, --largerthan
Diffstat (limited to 'CmdLine')
-rw-r--r--CmdLine/Seek.hs10
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]