added preferred-content log, and allow editing it with vicfg
This includes a full parser for the boolean expressions in the log, that compiles them into Matchers. Those matchers are not used yet. A complication is that matching against an expression should never crash git-annex with an error. Instead, vicfg checks that the expressions parse. If a bad expression (or an expression understood by some future git-annex version) gets into the log, it'll be ignored. Most of the code in Limit couldn't fail anyway, but I did have to make limitCopies check its parameter first, and return an error if it's bad, rather than erroring at runtime.
This commit is contained in:
parent
c809f3d486
commit
bc649a35ba
9 changed files with 193 additions and 33 deletions
|
@ -7,6 +7,7 @@
|
|||
|
||||
module Logs.Group (
|
||||
groupChange,
|
||||
groupSet,
|
||||
lookupGroups,
|
||||
groupMap,
|
||||
) where
|
||||
|
@ -39,7 +40,10 @@ groupChange uuid@(UUID _) modifier = do
|
|||
changeLog ts uuid (modifier curr) .
|
||||
parseLog (Just . S.fromList . words)
|
||||
Annex.changeState $ \s -> s { Annex.groupmap = Nothing }
|
||||
groupChange NoUUID _ = error "unknown UUID; cannot modify group"
|
||||
groupChange NoUUID _ = error "unknown UUID; cannot modify"
|
||||
|
||||
groupSet :: UUID -> S.Set Group -> Annex ()
|
||||
groupSet u g = groupChange u (const g)
|
||||
|
||||
{- Read the groupLog into a map. The map is cached for speed. -}
|
||||
groupMap :: Annex GroupMap
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue