Support --metadata field<number, --metadata field>number etc to match ranges of numeric values.

Similarly (well, for free), support preferred content expressions like
metadata=field<number and metadata=field>number
This commit is contained in:
Joey Hess 2016-02-27 10:55:02 -04:00
parent 01f1de0c3c
commit b946ca44c3
Failed to extract signature
8 changed files with 67 additions and 30 deletions

View file

@ -23,6 +23,7 @@ import Types.TrustLevel
import Types.Group
import Types.FileMatcher
import Types.MetaData
import Annex.MetaData
import Logs.MetaData
import Logs.Group
import Logs.Unused
@ -278,14 +279,12 @@ addMetaData :: String -> Annex ()
addMetaData = addLimit . limitMetaData
limitMetaData :: MkLimit Annex
limitMetaData s = case parseMetaData s of
limitMetaData s = case parseMetaDataMatcher s of
Left e -> Left e
Right (f, v) ->
let cglob = compileGlob (fromMetaValue v) CaseInsensative
in Right $ const $ checkKey (check f cglob)
Right (f, matching) -> Right $ const $ checkKey (check f matching)
where
check f cglob k = not . S.null
. S.filter (matchGlob cglob . fromMetaValue)
check f matching k = not . S.null
. S.filter matching
. metaDataValues f <$> getCurrentMetaData k
addTimeLimit :: String -> Annex ()